Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Projekt systemu ACL
mentoos
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Chciałbym napisać swój system ACL. Zastanawiam się jak go zaprojektować by był elastyczny. Bazę danych chcę zaprojektować tak:

acl_resources - zasoby
id | resource

acl_roles -> role
id | role_name

acl_permissions - tabela wiążąca 2 poprzednie, w permission określany jest dostęp lub nie
id | resource_id | role_id | permission

i jeszcze tabela users normalnie wykorzystywana do logowania

Co powinien mieć dobry system ACL?
Czy powinien mieć też możliwość przypisywania uprawnień konkretnemu użytkownikowi?

Ten post edytował mentoos 19.08.2010, 11:41:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ja w swoim systemie ACL mam 3-poziomowe sprawdzanie uprawnień. Uprawnienia przypisuję na poziomie zasobu, roli użytkownika oraz samego użytkownika. Mam napisaną funkcję w plsql, która dla podanego ID użytkownika zwraca mi listę uprawnień/zakazów. Jeżeli określenie uprawnienia występuje na kilku poziomach (np. dla roli jest odebrane, ale dla samego użytkownika przyznane) to, nadając priorytety uprawnieniom, zwraca wartość końcową (tj. w opisanym przypadku nadanie uprawnienia).

Co jeszcze byłoby przydatne? "Przestrzenie nazw" - tak to nazwałem - czyli po prostu typy zasobów. U mnie generalnie występują 3 typy: action (dla akcji, czyli kliknięcia), field (pozwala/zabrania modyfikacji pola w formularzu oraz w bazie danych - za jednym zamachem) oraz image (wyświetlanie obrazka).

Mając zdefiniowane wspomniane typy zasobów możesz zrobić fajny myk. Ja osobiście pracuję z frameworkiem Kohana i wstrzyknąłem się bezpośrednio w helpery do budowy linków oraz tworzenia formularzy. Dzięki temu już podczas tworzenia linku (helperem html::anchor()) sprawdzam czy użytkownik ma uprawnienia do danej akcji. Jeśli tak - tworzę link, jeśli nie - wyświetlam go jako span class="access_denied". Do tego mam plugin w jQuery, który wszystkie elementy o klasie access_denied wyszarza tj. np. obrazki przekształca do skali szarości. W całości daje to bardzo fajny efekt.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 19:24