Automatizované nastavování práv pro uživatele či skupinu, přes DB
Otázka
Jak automatizovat nastavování práv pro uživatele či skupinu, přes DB?
Odpověď
EaInfoport má dvě tabulky pro osobní oprávnění (uživatel a skupina). Pro uživatele se tabulka jmenuje `package_access_user` a pro skupiny `package_access_group`.
Popíšu zde postup pro skupiny, protože primárně doporučujeme nastavovat oprávnění pro skupiny, ale pro uživatele je postup obdobný.
Pro zápis do této tabulky jsou pro nás důležité 4 hodnoty. ID skupiny, ID repozitáře, GUID package(balíčku), ID oprávnění.
ID skupiny si můžeme vytáhnout například podle jména skupiny:
SELECT g.Id
FROM AspNetGroups g
WHERE g.Name = 'Jméno skupiny';
ID repozitáře si můžeme vytáhnout například podle jména repozitáře:
SELECT r.Id
FROM Repositories r
WHERE r.Name = 'Jméno repozitáře';
Výpis ID oprávnění pro každý typ:
- Owner má ID 1
- Read má ID 5
- Edit má ID 6
- Review má ID 8
- Delete má ID 10
Pozor! GUID balíčku se musí nacházet v našem vybraném repozitáři!
Insert script, který zapíše Read oprávnění pro skupinu 'Jméno skupiny' v repozitáři 'Jméno repozitáře' na balíčku s GUID '{00GUID00-0000-0000-0000-000PACKAGE00}'. Sloupeček Access ignorujeme, nastavujeme 0.
INSERT INTO `infoport`.`package_access_group` (`GroupId`, `Access`, `RepositoryId`, `Package`, `RelationTypeId`) VALUES (
(SELECT g.Id
FROM AspNetGroups g
WHERE g.Name = 'Jméno skupiny'),
0,
(SELECT r.Id
FROM Repositories r
WHERE r.Name = 'Jméno repozitáře'),
'{00GUID00-0000-0000-0000-000PACKAGE00}', '5');
Pro uživatele bude postup stejný, ale budeme zapisovat do tabulky `package_access_user` a budeme vybírat ID uživatele z tabulky AspNetUsers.
Defaultní oprávnění najdeme v tabulce `package_acess`. Důležité jsou sloupečky Package, RepositoryId, DefaultReadAllowed.
- Do Package se vložen Guid balíčku
- RepositoryId obsahuje číslo repozitáře v kterém se balíček nachází
- DefaultReadAllowed je sloupec pro defaultní čtení. 1 značí, že je čtení povoleno. 0 značí, že je čtení zakázáno. Null značí, že se čtení dědí z Parenta.
Rooty musí mít nastavené default pro DefaultReadAllowed! Nesmí obsahovat Null!
Scripty jsou udělané pro MySQL.
Popíšu zde také popis vyhodnocování, aby nenastala záměna.
Osobní oprávnění vždy aplikuje negaci na nastavené defaultní oprávnění!
Podívejme se na tento jednoduchý příklad. Balíček 1 má dva podřadné balíčky 2 a 3.
Pokud máme nastaveno na balíčku 1 defaultní čtení povoleno a na balíček 2 spustíme INSERT osobního oprávnění na čtení, tak EaInfoport vypočítá pro danou skupinu/uživatele na balíčku 2 zákaz.
Dále pokud máme nastaveno na balíčku 3 defaultní čtení zakázáno a spustíme INSERT osobní oprávnění na čtení, tak EaInfoport vypočítá pro danou skupinu/uživatele na balíčku 3 čtení.
No Comments