Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Autoryzacja użytkowników - OOP
tua1
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tua1
post
Post #2





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.

  1. //w klasie Permissions, pobieranie wszystkich uprawnień przy tworzeniu obiektu
  2. private function getPermissions() {
  3. //pobieranie danych z bazy
  4. while ($row = mysql_fetch_assoc($result)) {
  5. Permission p = new Permission($row['id'], $row['permission_name'], $row[permission_value']);
  6. $this->permissions["$row['id']"] = p;
  7. }
  8. }
  9.  
  10. public getPermission($id) {
  11. return $this->permissions["$id"];
  12. }


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ć:

  1. $this->permissions |= Permissions::getInstance()->getPermission("$row['id']")->getPermissionValue();


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.

  1. //W klasie reprezentującej moduły strony
  2. function checkPermissions($userPermissions, $elementPermissions) {
  3. if($userPermissions & $elementPermissions) {
  4. return true;
  5. } else {
  6. return false;
  7. }
  8. }


Jest późna pora i jestem trochę nie kumaty nic lepszego nie przychodzi mi do głowy na tą chwilę.

Pozdrawiam
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: 10.10.2025 - 15:00