Přístupová práva

Přístupová práva systému FluxPam5 jsou definována aktuálně přihlášeným uživatelem. Práva mohou být ve větě uživatele nastavena přímo nebo pomocí rolí. Věta role je stejná jako věta uživatele a může mít připojené další role atd.

Výsledná práva jsou tedy průnikem práv všech rolí, které obsahuje přihlášený uživatel s jeho vlastními právy. Může se stát, že uživatel nemá žádná vlastní práva a používá pouze práv svých rolí.

Pro zjištění výsledných práv v makrojazyku používáme funkci _AppRights. Tato funkce používá konstanty AR_xxx určující, co bude funkce vracet. Chceme-li například zjistit, zda může přihlášený uživatel importovat uživatelská práva uděláme to takto:

if(_AppRights(AR_ADMIN_IMPORT_PRAV))then
  ...

Předchozí příklad ukazuje zjištění jednoduchých přístupových práv. Složitější práva obsahují další parametr, který upřesňuje požadavek. Jedná se například o zjištění, zda aktuální uživatel obsahuje určitou roli. Systémové role jsou definovány jednoznačnými identifikátory UID. Tyto UID jsou dostupné jako předdefinované konstanty AR_UID_CTE_xxx a AR_UID_PISE_xxx.

Příklad na zjištění zda má uživatel roli umožňující číst informace o dětech:

if(_AppRights(AR_MA_ROLE, AR_UID_CTE_DETI))then
  ...

Jiným příkladem je, zda má přihlášený uživatel právo spustit určité makro:

if(_AppRights(AR_POVOLENA_MAKRA, "UnivSest.mac"))then
  ...

Tato funkce bude vracet true i v případě, že má přihlášený uživatel právo na spouštění všech maker AR_PAM5_VSECHNA_MAKRA. V případě, že se používá výčet maker která může uživatel spouštět, může dojít k následujícímu problému: v případě, že makro samo vyrobí další makro a chce ho spustit, bude program hlásit chybu. Proto existuje procedura MacroEnable, která jednou povolí spuštění makra určitého jména, jenž není ve výčtu povolených maker v přístupových právech.