Přístupová práva

Z Freenetis Wiki
Verze z 4. 8. 2009, 13:16, kterou vytvořil Quimi (diskuse | příspěvky) (aco_map)
Přejít na: navigace, hledání

Popis implementace správy přístupových práv ve Freenetisu

Popis SQL tabulek knihovny PhpGacl

V PhpGaclu je všechno postavené na objektech ACO, ARO a AXO.

ACO - objekty operací

ARO - objekty (nebo skupiny objektů), které chtějí jednotlivé operace (ACO) vykonávat

AXO - objekty (nebo skupiny objektů), nad kterými chtějí jednotlivé ARO nějakou operaci (ACO)

acl

Tabulka definující jednotlivé přístupová pravidla.

Obsahuje sloupce id, section_value, allow, enabled, return_value, note, updated_date.

id - identifikátor, důležitý pro propojení s ACO, ARO a AXO

section_value - název sekce, kam toto pravidlo patří

allow - 1 => pravidlo operaci povoluje, 0 => pravidlo operaci zakazuje

enabled - 1 => pravidlo je povolené, 0 => pravidlo je zakázané

return_value - zatím netuším

note - komentář, popisující funkci pravidla (např. Administrátoři mohouu dělat vše)

updated_date - timestamp poslednín aktualizace pravidla

acl_sections

Tabulka definující jednotlivé sekce pravidel.

Defaultně jsou v PhpGaclu dvě sekce - System a User, Freenetis ale používá jen User.

Obsahuje sloupce id, value, order_value, name a hidden.

id - identifikátor, víceméně zbytečný, protože pravidla se do sekcí přiřazují pomocí hodnoty (value)

value - krátký název bez mezer, používá se pro přiřazení jednotlivých acl do sekcí

order_value - zatím netuším

name - dlouhý název, popis

hidden - 0 => sekce je viditelná, 1 => je skrytá

acl_seq

Tabulka, jejíž jediným účelem je zapamatování si aktuálně posledního id tabulky acl.

PhpGacl (bůhví proč) nepoužívá u tabulek auto increment.

Obsahuje sloupec id.

id - poslední id v tabulce acl

aco

Tabulka definující jednotlivé objekty ACO. Ve freenetisu jsou buď ACO pro vykreslování menu (sekce menu) a ACO pro obecné operace (sekce freenetis) - view_all, view_own, edit_all, edit_own, delete_all, delete_own, new_all, new_own, confirm_all, confirm_own, ... které se používají výhradně s AXO objekty.

Obsahuje sloupce id, section_value, value, order_value, name a hidden.

id - identifikátor, nedůležitý (pro propojení s acl v tabulce aco_map se používá value)

section_value - jméno sekce, definované v aco_sections

value - krátký název bez mezer, používá se pro přiřazení jednotlivých aco do sekcí a pro propojení s jednotlivými acl pravidly v aco_map

order_value - zatím netuším

name - dlouhý název, popis

hidden - 0 => sekce je viditelná, 1 => je skrytá

aco_map

Propojuje ACO objekty s jednotlivými acl pravidly. ACO jako jediné (z trojice ACO, ARO a AXO) nemá možnost shhlukování do skupin, proto není žádná další dabulka aco_groups_map.

Obsahuje sloupce acl_id, section_value a value.

acl_id -

section_value -

value -

aco_sections

Sekce pro jednotlivé ACO, Freenetis používá pouze dvě: menu - pro ACO objekty týkající se vykreslování menu, a pak freenetis - pro definici obecných ACO operací (zobrazení, editování, mazání a potvrzování).

Obsahuje sloupce id, value, order_value, name a hidden.

id - identifikátor sekce (není pro nic potřeba)

value - samotný název sekce (u nás menu a freenetis)

order_value - zatím netuším

name - popis sekce

hidden - 0 => sekce je viditelná, 1 => je skrytá

aro_groups_map

přiřazuje k jednotlivým ACL pravidlům skupiny uživatelů.

Příklad:

Vytvoříme pravidlo "Zájemci o členství a řádní členové mohou dělat XYZ".

Toto pravidlo bude v tabulce "acl" reprezentováno novým řádek s id=27, ve kterém je uloženo hodnota "allow";

Pokud "řádní členové" mají id=22 a zájemci o členství id=23, pak v tabulce aro_groups_map při vytvoření tohoto pravidla přibudou 2 nové řádky:

acl_id | group_id


27 | 22

27 | 23

axo_groups_map

Podobné jako aro_groups_map, ale pro AXO