![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 23.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam za zadanie skodzić mini CMS w php z użyciem obiektów, utknąłem na zarządzaniu użytkownikami. Chciałbym stworzyć jakąś hierarchię klas, ale kompletnie nie mam pomyśłu jak się za to zabrać. Szukałem coś po necie, ale zwykle kończyło się na jednej wielkiej klasie Users odpowiedzialnej za logowanie, dodawania nowych użytkowników, a taki sposób programowania jest nie w moim stylu, żeby wszystko pakować do jednej klasy. Chciałbym, żeby po zainstalowaniu cms, były aktywne 2 typy użytkowników: Admin i Guest, przy czym admin może aktywować kolejne typy, np: Regular - czyli użytkownika z możliwością rejestracji w serwisie, czy Editor, czyli kogoś do pisania artykułów na stronie. Każdy typ, użytkownika ma określone uprawnienia, chciałbym je zakodować na sztywno w klasach i używać do porównywania operacji bitowych, ale to chyba utrudni dodawania nowych uprawnień przez Admina. Myślałem o dziedziczeniu, stworzyć abstrakcyjną klasę User z minimalnymi uprawnieniami i funkcjami dostępnymi dla wszystkich użytkowników, a później dziedziczyć po niej: AdminUser, RegularUser, GuestUser itd, a w klasie odpowiedzialnej za logowanie w zależności od pobranego z bazy typu użytkownika tworzyć obiekt określonej klasy, nie wiem czy to dobre rozwiązanie i czy to nie za dużo komplikacji, proszę o jakieś porady i sorry że tak dużo, ale utknąłem z projektem w martwym punkcie. Pozdrawiam Ten post edytował tua1 11.12.2009, 00:24:26 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Moja osobista sugestia
- UserAuth - odpowiedzialna za przechowywanie danych aktualnie zalogowanego użytkownika - AclPrivileges - Lista uprawnień dla roli aktualnie zalogowanego użytkownika. Egzemplarz tej klasy powinieneś przekazać do UserAuth Jeżeli chodzi o budowanie uprawnień to już inna działka. Jeżeli nie chcesz działać na bazie danych to możesz to zrobić na plikach w dość prosty sposób. Cytat Myślałem o dziedziczeniu, stworzyć abstrakcyjną klasę User z minimalnymi uprawnieniami i funkcjami dostępnymi dla wszystkich użytkowników, a później dziedziczyć po niej: AdminUser, RegularUser, GuestUser itd, a w klasie odpowiedzialnej za logowanie w zależności od pobranego z bazy typu użytkownika tworzyć obiekt określonej klasy, nie wiem czy to dobre rozwiązanie i czy to nie za dużo komplikacji, proszę o jakieś porady i sorry że tak dużo, ale utknąłem z projektem w martwym punkcie. Tyż tak można ale dla ułatwienia edycji to już lepiej pliki (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 23.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za odpowiedź, ciekawe propozycja, no i jest oop bo asocjacja:)
Do uprawnień, chyba przechowam je w bazie danych, tylko chciałbym ciągle zachować możliwość porównywania bitowego. Mam taki pomysł, tabelka m.in z polami permission_name, permission_value no i value zwiększać *2 przy dodawaniu nowego uprawnienia. (Jakaś procedura czy coś) Będzie ok? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A opisy dokładniej jak chcesz zrealizować zapisywanie uprawnień z możliwością porównania bitowego?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 23.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Hmmy, no właśnie czepiłem się tych bitów no i teraz trzeba z tego wybrnąć.
Do zarządzania uprawnieniami stworzyłbym klasę Permissions, która pobiera m.in wszystkie dostępne uprawnienia (obiekty klasy Permission) i zapisuje je w tablicy.
W klasie autoryzującej użytkowników, czy określających jakiś moduł strony, mający posiadać uprawnienia, pobrac id uprawnien z bazy danych np. dla danego typu użytkownika i na tej podstawie utworzyć:
Dalej przechować id użytkownika w sesji, tworzyć obiekt reprezentujący użytkownika i sprawdzać możliwość dostępu do modułu porównując przywileje.
Jest późna pora i jestem trochę nie kumaty nic lepszego nie przychodzi mi do głowy na tą chwilę. Pozdrawiam |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie do końca rozumiem, jak porównujesz "permissiony" ale jeżeli działa to ok:)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 13:44 |