Portál AbcLinuxu, 18. května 2025 17:54
Co treba role zalozene na ACL. Budes mit role a kazda bude mit pravo na nejakou konkretni zaznam v modulu, nebo jenom modul a pak se bude vztahovat na vsechny zaznamy daneho modulu a nebo bude obecna a pak se bude vztahovat na vse.
Realizace by mohla vypadat treba tak ze v DB budes mit tabuklu se seznamem uzivatelu, tabulku se seznamem roli ve ktere bude navic jmeno (nebo id) modulu a zaznamu, nakonec relacni tabulku mezi uzivately a rolemi. Pokud bude id zaznamu NULL bude se dane prirazeni role vztahovat na vsechny zaznamy modulu a pokud bude i nazev modulu NULL pak se bude vztahovat globalne na vsechny moduly a zaznamy. Role pak muzes chápat jako akce a vytvorit tak role "admin", "editor", "publisher", ...
Pak vytvoris treba roli "editor" pro modul "clanky" ... ta muze upravovat vsechny clanky
nebo roli "admin" ... ta je adminem pro vsechny moduly a jejich zaznamy
nebo roli "publisher" pro modul "clanky" a zaznam "5" ... ta muze publikovat clanek s id 5
V kazdem modulu pak budes jenom zjistovat jestli ma uzivatel roli (napr. "editor" pro upravu) pro dany modul popř. i záznam.
Muzes tam dat i nejake zavislosti a dedicnost, treba pokud ma uzivatel roli "admin" muze vse. Nejake defaultni role, napr. ze kazdy nove registrovany uzivatel ma automaticky roli "user" pro vsechny moduly, nebo ze kdyz uzivatel, ktery ma pravo vytvaret clanky nejaky vytvori dostane pro modul "clanky" a zaznam vytvoreneho clanku roli "owner" atp.
To ti s timhle pujde...
Uživatel Petr muze jen zobrazit uzivatele -> ma roli "viewer" pro modul "uzivatlele"
Uživatel Jarda muze editovat -> ma roli "editor" pro modul "uzivatele"
Uživatel Pepa muze editovat i mazat -> ma roli "editor" pro modul "uzivatele" a zaroven roli "deleter" pro modul "uzivatele"
(pojmenovani roli a modulu je samozrejme libovolne)
V modulu kontrolujes jen role a pak je na tobe kolik si vytvoris uzivatelů.
Kdyz nekdy v budoucnu pridas nejaky modul tak v nem zas budes kontrolovat jen role a pak je opet na tobe, kterym uzivatelům, které role dáš... proste se vyvori jen zaznam do jedne ze zminenych tabulek (na to by mohl byt nejaky modul "udelovac prav" do ktereho by mel pristup jen uzivatel s id=1 tedy neco jako root)
Neni zač... škoda, že si nejako asi nerozumime :-) Koukni se kdyztak na tenhle plugin: http://github.com/DocSavage/rails-authorization-plugin/tree/master kromě tabulky kde jsou uživatele používa dve pro autorizaci a muzes mit kolik chces modulu, kolik chces akci/roli...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.