Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Tabela dla systemu uprawnień
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Witajcie,

O ile w samym PHP prosty system grup i uprawnień to nie problem to kombinuję jaka powinna być najlepsze struktura tabeli.
Hmm myślałem o dwóch sposobach, w pierwszym stworzyłbym tabelę groups gdzie trzymałbym dane o wszystkich grupach, w tabeli users_groups łączyłbym id użytkowników z id grupy. To działałoby fajnie ale mając na uwadzę grupy podstawowe czyli administrator i moderator nie lepiej w tabeli użytkownicy dodać kolumnę level i tam np 3 dla admina 2 dla moderatora 1 dla użytkownika itd?
Niby pierwszy i drugi mają prawo istnieć, jak wy taki problem byście rozwiązali?
Go to the top of the page
+Quote Post
ctom
post
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


może tak ?

Kod
T: users
    id, ....

T: roles
    id, name

T: permissions
    id, name


T: role_has_permissin
    roleId, permissionId

T: user_has_role
    userId, roleId
Go to the top of the page
+Quote Post
Fred1485
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


no to jest rozwiązanie, jak widać uprawnienia dałeś osobno niż przynależność do rangi. A jakby to scalić?
Go to the top of the page
+Quote Post
ctom
post
Post #4





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(Fred1485 @ 25.07.2015, 19:03:22 ) *
no to jest rozwiązanie, jak widać uprawnienia dałeś osobno niż przynależność do rangi. A jakby to scalić?


To zalezy od Ciebie jakie sobie uprawnienia zakładasz w aplikacji,

jeżeli będziesz w aplikacji posługiwał się tylko "rolami" to z "uprawnień" możesz zrezygnować.
Ale jak np. w jakiejś akcji założysz, że może ja wykonać usera w prawami do zapisu to jeżeli w danej roli nie jest zawarte to uprawnienie to user nie będzie miał do niej dostępu.
Oparcie się na uprawnieniach niż na rolach daje większe możliwości zarządzania dostępem do danych akcji. Bo po jakimś czasie przyjdzie Ci dodać rolę "młodszy admin" który będzie mógł coś tam robić ... to wystarczy, że jego rola będzie zawierała odpowiednie uprawnienia , a w kodzie aplikacji nie musisz zmieniać nawet znaku.
Go to the top of the page
+Quote Post
Fred1485
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Nie mi chodzi tylko o proste sprawdzanie po tzw randze tak jak to jest w phpbb czy php zmodyfikowane przez przema (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Zobacz jakąś acl-ke np zenda, będziesz miał podgląd jak to może wyglądać. Tu nie ma reguły bo zawsze są inne wymagania.
Go to the top of the page
+Quote Post
Fred1485
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


zaczęliśmy na mysql a skończymy na frameworku (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Raczej chodziło o to żebyś sobie poczytal jak to jest zrobione i nie odgrywał koła na nowo.
Go to the top of the page
+Quote Post
Fred1485
post
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Dobra już cos mam zastanawia mnie jeszcze tylko jesna sprawa. Jezeli będzie dużo grup i poszczególne będą mieć dostęp do np tematow na forum ale jednocześnie moderator i administrator zawsze powinni miec dostęp nawet jesli do tej grupy nie należą. Sprawdzać czy user jest moderatorem i dodac w warunku?
Go to the top of the page
+Quote Post
ctom
post
Post #10





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(Fred1485 @ 26.07.2015, 09:14:38 ) *
. Jezeli będzie dużo grup i poszczególne będą mieć dostęp do np tematow na forum ale jednocześnie moderator i administrator zawsze powinni miec dostęp nawet jesli do tej grupy nie należą. Sprawdzać czy user jest moderatorem i dodac w warunku?


widzisz teraz analogię do mojej wcześniejszej wypowiedzi (IMG:style_emoticons/default/questionmark.gif)

sprawdzasz tylko czy "user możesz przeglądać tematy" ( tzn. czy jego Rola zawiera takie Uprawnienie) ... i wtedy nie ma znaczenia czy jest to moderator, administrator czy ktoś tam
Go to the top of the page
+Quote Post
Fred1485
post
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No ok ale jak to wszystko potem pogodzić żeby się nie pogubić. Mam załóżmy jakieś tam grupy i nie mam jeszcze ich uprawnień bo uprawnienia zakładam dopiero podczas np nowgo tematu czy coś. Wklepię do bazy że to forum dla tej grupy należy i żadna inna do niej dostępu nie ma, ale z drugiej strony moderator zawsze tam może wejść, podczas zakładania tematu tylko dane o jednej grupie bym zapisywał.
Chyba że źle kombinuję (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
ctom
post
Post #12





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


nie wiem czy do końca się rozumiemy, bo ja z założenia najpierw wiem jakie są lub powinny być uprawnienia a kwestia nazw roli jest drugorzędna .... bo zawsze mogę z danej roli usunąć to uprawnienie

np.
uprawnienia:
moze-listowac-wpisy
moze-edytowac-wpisy
moze-usuwac-wpisy


i teraz gdy masz wykonać jakąś akcje to w logice sprawdzasz coś w ten deseń :
Kod
if( ! $user->can( 'moze-usuwac-wpisy' ) ) throw new Exception('brak uprawnień');


role zawsze możesz zrobić nowe lub edytować jej uprawnienia potem przypisać ją danemu Userowi - i jest bez znaczenia czy jest to Admin czy Admin12 bo możesz zarządzać dostępem jak chcesz. A gdy zamkniesz się , że Rola jest wyznacznikiem dostępu to co zrobisz gdy będziesz chciał odebrać jednemu userowi część praw Administratora ? - bo przecież nie będziesz mógł dodać roli "młodszy-admin" bez zmian w kodzie
Go to the top of the page
+Quote Post
Fred1485
post
Post #13





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Tak dokładnie o to chodzi mam z góry ustalone np usuwanie modyfikowanie dodawanie. Ale takie uprawnienia muszą być osobno dla kazdej kategorii forum. Podczas tworzenia kategorii jedna moze miec inne uprawnienia dla poszczegolnej grupy niz druga.
Go to the top of the page
+Quote Post
ctom
post
Post #14





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(Fred1485 @ 26.07.2015, 11:58:50 ) *
Podczas tworzenia kategorii jedna moze miec inne uprawnienia dla poszczegolnej grupy niz druga.


myśl w drugą stronę .... kto i jaki może mieć dostęp do "kategorii" a konkretnie jakie uprawnienie pozwala na jaką czynność "na danej kategorii"

Pamiętaj też o fakcie jaki już było tu wspomniany - każdy projekt ma inne wymagania.
Bo może w Twoim przypadku uprawnienia/role można spłaszczyć... bo jeżeli zakładasz skończoną ilość tych kategorii i uprawnień dla danego usera to powyższe moje sugestie mogą  się okazać over engineered.
Go to the top of the page
+Quote Post
Fred1485
post
Post #15





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No np w bazie trzymam info jaka grupa jest moderatorem kategorii kto moze pisac tam tematy kto edytować a kto moderowac itp.
Go to the top of the page
+Quote Post
ctom
post
Post #16





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


no i OK - jeżeli takie rozwiązanie wyczerpuje potrzeby dla projektu to idź tą drogą. Nie martw się, że taki ja ma inną wizję najważniejsze byś spełnił założenia projektu.
Go to the top of the page
+Quote Post
Fred1485
post
Post #17





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


zapuszczę się jeszcze w tabele od phpbb i od przema zobaczę co tam w trawie piszczy (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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: 14.09.2025 - 12:50