|
STRIX
DozvoleACL: Revision 4
Dozvole i ACLNasljedjivanjeDozvole 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 opisPostoje 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) OstaloZa sada, možete pogledati AclHacks za hands-on stvari koje možete napraviti direktno u bazi. Hacking ACLOvo je quick guide kako napraviti zanimljive stvari sa ACL-ovima. Nasljeđivanje ACL-ova za kategorijeKako 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žajeselect 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:
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 ); |