Skip to main content

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?

image-1691050271761.png

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.

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.

Snímek obrazovky 2024-08-09 134909.png

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í.