Přístupová práva

Z Freenetis Wiki
Přejít na: navigace, hledání


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

Aktuální přístupová práva pro FreenetIS jsou založena na PHP GACL. Samotná knihodna byla odstraněna, ale její sytém tabulek byl zachován.


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