![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Czy powinien mieć też możliwość przypisywania uprawnień konkretnemu użytkownikowi? Oczywiście. Rzadko, ale się przydaje; nie ma sensu tworzenia osobnej grupy dla zmiany tylko jednego uprawnienia. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie zrobię też obsługę uprawnień dla konkretnego użytkownika.
Czy struktura bazy, którą dałem pod taki system jest prawidłowa? Co polecałbyś dorzucić jeszcze? |
|
|
![]()
Post
#4
|
|
![]() 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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
@phpion
Extra masz zrobiony system ACL. Sam używam Kohan'y, tyle że v3.0 ![]() Jak wygląda struktura bazy danych w Twoim systemie ACL? Podobna do tej co pokazałem? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Poniżej zrzuty tabel (w kolejności alfabetycznej, nie zakładania - powycinałem ze zrzutu bazy):
Do tego wspomniana funkcja, a do niej potrzebny nowy typ danych:
![]() PS: Okazuje się jednak, że działa to na 5, a nie 3 poziomach ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki. Wezmę się za robotę systemu, bo się bardzo przydaje ogólnie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 2 Dołączył: 10.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
w jaki sposób należy zmodyfikowac zapytanie do bazy aby działała na MYSQL ?
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
phpion
do czego służy tabela : acl_resource_namespaces , skoro nie jet wykorzystana w zapytaniu SQL -------------------- Nie udzielam pomocy poprzez PW
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 15:27 |