Dozvole i ACL
Nasljedjivanje
Dozvole se definiraju nad nekom jedinicom sadržaja - site, kategorija/stranica, vijest, dokument.
Dozvole se daju korisniku ili grupi korisnika.
Dozvole mogu biti READ, WRITE, AUTHOR/SUGGEST, ADMIN/OWN itd. (Skup dozvola nije ograničen i po potrebama se može proširiti.)
Dozvola korisniku je jača od dozvole grupi. Ako je dozvola dana ili oduzeta korisniku zanemaruju se dozvole koje bi taj korisnik imao kao pripadnik grupama kojima je dana dozvola.
Kako postoji hijerarhija jedinica sadržaja tako postoji i nasljeđivanje dozvola.
Ako je jednoj grupi ili korisniku definirana dozvola više puta u više razina, u obzir se uzima dozvola definirana hijerarhijski najbliže jedinici sadržaja, ali opet se uzima pravilo: dozvola korisniku je jača od dozvole grupi. Npr. ako je Peru nad siteom definirano pravo READ, ali mu je nad konkretnim dokumentom PeroNemaPravo.doc zabranjeno READ, on neće moći pristupiti tom dokumentu.
Alternativni opis
Postoje tri pojma:
SUBJEKT = korisnik, grupa korisnika
OBJEKT = dokument/folder
PRAVO = za dokumente READ ili OWN, za foldere READ, SUGGEST, AUTHOR, OWN (svako od prava ima vrijednost DA ili NE)
Jedan zapis u ACL-u mora imati definirane sve tri vrijednosti.
Vrijede pravila:
• PRAVO korisniku je jače od PRAVA grupi. Ako je PRAVO dano ili oduzeto (vrijednost DA ili NE) korisniku, zanemaruju se PRAVA koje bi taj korisnik imao kao pripadnik grupama kojima je dana dozvola.
• ACL se može nasljeđivati s jedne razine na drugu (npr. sa foldera na podfolder ili dokument što je defaultno ponašanje document managementa)
• Ako je jednoj grupi ili korisniku definiran ACL više puta u više razina, u obzir se uzima PRAVO definirano hijerarhijski najbliže jedinici sadržaja (dokumentu ili folderu), ali opet se uzima pravilo: PRAVO korisniku je jače od PRAVA grupi.
• Zabrana (PRAVO=Ne) u kontekstu korisnika je jače od dozvole (PRAVO=Da)
• U kontekstu grupe, dozvola (PRAVO=Da) je jače od zabrane (PRAVO=Ne)
Ostalo
Za sada, možete pogledati AclHacks za hands-on stvari koje možete napraviti direktno u bazi.
Hacking ACL
Ovo je quick guide kako napraviti zanimljive stvari sa ACL-ovima.
Nasljeđivanje ACL-ova za kategorije
Kako pogledati koja ktegorija nasljeđuje od koje?
select
(select url from kategorija where id = parent_object_id),
(select url from kategorija where id = object_id)
from acl_inherits
where acl_id = 'kats' and parent_acl_id = 'kats'
Prava pristupa i dozvole za sadržaje
select UserCanDoOnObject(user_id, perm, acl_id, object_id);
perm određuje pravo. Postojeće permisije mogu se pogledati sa:
strix=# select * from perms order by flag ;
Neke od njih su aliasi tako da se iste dozvole mogu koristiti u razlicitim kontekstima.
Kratko objašnjenje kako su zamišljene osnovne razine dozvola u STRIXu:
- PERM_READ - korisnik s tom dozvolom ima pravo pristupa (u kontekstu kategorije tj. stranice) odnosno pravo čitanja sadržaja (u kontekstu jedinice sadržaja)
- PERM_WRITE ili njezin alias PERM_SUGGEST (alias u kontekstu dozvola na foldere) - korisnik ima pravo predlaganja sadržaja, glasanja, komentiranja, postavljanje pitanja. Predloženi sadržaj se ne objavljuje direktno nego se čeka dozvola administratora stranice koji za taj sadržaj može dozvoliti objavu ili odbiti.
- PERM_AUTHOR - korisnik ima pravo direktne objave svog contenta bez posredstva administratora. Korisnik s tom dozvolom ne može mijenjati tuđi content, ali može svoj.
- PERM_ADMIN - korisnik je administrator stranice.
acl_id su tipovi sadržaja. Mogu se pogledati sa:
strix=# select * from acl_register ;
object_id je identifikator objekta (obično primarni ključ) objekta za koji se provjerava permisija.
Primjer korištenja:
select UserCanDoOnObject(1, 'PERM_ADMIN', 'news', 42 );
Updated by dpavlin@hidden on Dec 14 2:02am
Posted by dpavlin@hidden on Nov 17 2:40pm
Prava pristupa i dozvole za sadržaje
select UserCanDoOnObject(user_id, perm, acl_id, object_id);
perm određuje pravo. Postojeće permisije mogu se pogledati sa:
strix=# select * from perms order by flag ;
Neke od njih su aliasi tako da se iste dozvole mogu koristiti u razlicitim kontekstima.
Kratko objašnjenje kako su zamišljene osnovne razine dozvola u STRIXu:
- PERM_READ - korisnik s tom dozvolom ima pravo pristupa (u kontekstu kategorije tj. stranice) odnosno pravo čitanja sadržaja (u kontekstu jedinice sadržaja)
- PERM_WRITE ili njezin alias PERM_SUGGEST (alias u kontekstu dozvola na foldere) - korisnik ima pravo predlaganja sadržaja, glasanja, komentiranja, postavljanje pitanja. Predloženi sadržaj se ne objavljuje direktno nego se čeka dozvola administratora stranice koji za taj sadržaj može dozvoliti objavu ili odbiti.
- PERM_AUTHOR - korisnik ima pravo direktne objave svog contenta bez posredstva administratora. Korisnik s tom dozvolom ne može mijenjati tuđi content, ali može svoj.
- PERM_ADMIN - korisnik je administrator stranice.
acl_id su tipovi sadržaja. Mogu se pogledati sa:
strix=# select * from acl_register ;
object_id je identifikator objekta (obično primarni ključ) objekta za koji se provjerava permisija.
Primjer korištenja:
select UserCanDoOnObject(1, 'PERM_ADMIN', 'news', 42 );
Updated by dpavlin@hidden on Dec 14 1:56am
Posted by dpavlin@hidden on Nov 17 2:43pm
Hacking ACL
Ovo je quick guide kako napraviti zanimljive stvari sa ACL-ovima.
Nasljeđivanje ACL-ova za kategorije
Kako pogledati koja ktegorija nasljeđuje od koje?
select
(select url from kategorija where id = parent_object_id),
(select url from kategorija where id = object_id)
from acl_inherits
where acl_id = 'kats' and parent_acl_id = 'kats'
Updated by dpavlin@hidden on Nov 18 5:08am
Posted by dpavlin@hidden on Nov 17 2:38pm
|
Weblog Navigation
Loading...
|