ACL více rolí, problematické dědění rolí
- Aleksandr
- Člen | 14
Dobrý den,
mám takový problém s rolemi, mám role v rámci aplikace nastavené
v configu(common.neon):
GUEST(nepřihlášen)
CUSTOMER(dědí od GUESTA)
EDITOR(dědí od CUSTOMER)
OWNER(dědí od EDITOR)
SUPERUSER(dědí od OWNER)
hierarchicky v JSON datech, které decodnu to vypadá takhle:
name=>"Aleksandr"
superUser=>true/false //je SUPERUSER, tedy nejvyšší oprávnění, které přebíjí zbytek oprávnění v subjects
subjects=>([
array(displayName=>"Název firmy1",role=>"EDITOR",ident_number=>12345678),
array(displayName=>"Název firmy 2",role=>"OWNER",ident_number=>87654321)
])
může to znamenat, že bych měl uživatele co jsou a nejsou superUseři a mají a nemají firmy ve kterých můžou mít různe role.
Jak by se podle vás nejvhodněji tenhle problém řešil a hlídal pro jednotlivé akce a zda to vůbec jde?
- David Matějka
- Moderator | 6445
Ahoj, před pár lety jsem měl na toto téma talk na posobotě
na githubu je poslední implementace, bohužel k tomu není docka, tak se kdyžtak ptej. (v tvém případě bys měl „SubjectScope“, který by vracelo role té identity pro daný subject)
edit:
jo a tady je ještě example repo s použitím v projektu (jen teda nepoužívá tu knihovnu, ale má vlastni, zjednodušenou implementaci)
- Aleksandr
- Člen | 14
Aleksandr napsal(a):
Dobrý den,
mám takový problém s rolemi, mám role v rámci aplikace nastavené v configu(common.neon):GUEST(nepřihlášen) CUSTOMER(dědí od GUESTA) EDITOR(dědí od CUSTOMER) OWNER(dědí od EDITOR) SUPERUSER(dědí od OWNER)
hierarchicky v JSON datech, které decodnu to vypadá takhle:
name=>"Aleksandr" superUser=>true/false //je SUPERUSER, tedy nejvyšší oprávnění, které přebíjí zbytek oprávnění v subjects subjects=>([ array(displayName=>"Název firmy1",role=>"EDITOR",ident_number=>12345678), array(displayName=>"Název firmy 2",role=>"OWNER",ident_number=>87654321) ])
může to znamenat, že bych měl uživatele co jsou a nejsou superUseři a mají a nemají firmy ve kterých můžou mít různe role.
Jak by se podle vás nejvhodněji tenhle problém řešil a hlídal pro jednotlivé akce a zda to vůbec jde?
Mě napadlo, že bych vybral nejvyšší roli a s ní pracoval v rámci celé aplikace. Případně bych doplňkově kontroloval ify v rámci nějakých detailů, kde by se role mohli mísit…