Přístupová práva: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
m (Quimi přesunul stránku Přístupová práva na Přístupová práva bez založení přesměrování)
 
(Není zobrazeno 16 mezilehlých verzí od 4 dalších uživatelů.)
Řádek 1: Řádek 1:
==Popis implementace správy přístupových práv ve Freenetisu==
+
[[en:Access rights]]
 +
[[ru: Права доступа]]
 +
 
 +
==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.
  
  
Řádek 34: Řádek 39:
 
Tabulka definující jednotlivé sekce pravidel.
 
Tabulka definující jednotlivé sekce pravidel.
  
Defaultně jsou v PhpGaclu dvě sekce - System a User, Freenetis ale používá jen User.
+
Defaultně jsou v PhpGaclu dvě sekce - System a User, FreenetIS ale používá jen User.
  
 
Obsahuje sloupce id, value, order_value, name a hidden.
 
Obsahuje sloupce id, value, order_value, name a hidden.
Řádek 43: Řádek 48:
  
 
'''order_value''' - zatím netuším
 
'''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
 
'''name''' - dlouhý název, popis
Řádek 50: Řádek 81:
 
===aco_map===
 
===aco_map===
  
Podobné jako aro_groups_map, ale pro ACO. Protože ACO nemá stromovou strukturu skupin, neodkazuje tato tabulka na skupiny, ale přímo na jednotlivé objekty ACO.
+
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)
  
Proto každý řádek kromě acl_id obsahuje položky section_value a value, identifikující dané ACO.
+
'''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===
 
===aro_groups_map===

Aktuální verze z 31. 1. 2018, 13:57


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