Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System uprawnień - organizacja kodu
404
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


Witam!
Stworzyłem sobie prosty system uprawnień i zastanawiam się nad organizacją kodu...
  1. class SSE_Group
  2. {
  3. private $db,
  4. $id,
  5. $hash,
  6. $name;
  7.  
  8. public function getId();
  9. public function setId();
  10.  
  11. //...
  12.  
  13. };

  1. class SSE_GroupArray
  2. {
  3. public $groupsArray = array();
  4. };

  1. class SSE_GroupDatabase : public JakasKlasaDoObslugiBazyDanych
  2. {
  3. private $db;
  4.  
  5. public function insert(SSE_Group $group);
  6. public function delete($groupId);
  7. public function select(SSE_GroupArray &$groups);
  8. public function update(SSE_Group $group);
  9.  
  10. //...
  11. };

Wiem, że to mój kod, wiem, że "powinienem pisać tak jak umiem", ale prosiłbym o jakieś wskazówki bądź przykłady rozwiązań w waszych aplikacjach (IMG:style_emoticons/default/smile.gif) Ogólnie rzecz biorąc to chciałbym, aby ten kod był elastyczny i w miarę łatwy w rozwoju.

Ten post edytował 404 20.01.2012, 00:00:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Tak więc, ja tworząc klasę do obsługi użytkownika, stworzyłem do niej od razu cały zestaw klas które razem z tą klasą User współgrają. Czyli Authentication, UserManager (aktualizacja usera, szukanie usera według kryteriów, tworzenie nowego usera itp), Group oraz GroupManager. Klasa User posiada właściwość $role, która może posiadać tylko jedną z 3 podstawowych roli (ROLE_GUEST, ROLE_USER, ROLE_ADMIN). Domyślnie ROLE_GUEST. Każda grupa może mieć jakieś swoje role, użytkownik może należeć do różnych grup, a każda grupa może mieć przypisane różne uprawnienia, uprawnienia różne niż te 3 podstawowe. Czyli np uprawnienia dla moderatorów, redaktorów itp. Podczas autoryzacji, UserManager pobiera z bazy dane (podstawowe dane, opcjonalne dane, oraz wszystkie grupy do których należy użytkownik), te dane są przekazywane do klasy User. A ona w konstruktorze sobie te dane odpowiednio dzieli/łączy i przypisuje do odpowiednich właściwości. Mając wszystkie grupy do których należy użytkownik, mam uprawnienia tych wszystkich grup. Z całości powstaje tablica, która jest przypisana do właściwości $_roles. W klasie mam metodę hasRole(mixed $role), która przeszukuje tą wspólną tablicę w poszukiwaniu podanych w argumencie roli i zwracając true/false. Na samym początku sprawdzając czy w tej tablicy nie istnieje ROLE_ADMIN, jeżeli tak return true, jeżeli nie, to przeszukiwana jest tablica pod kontem roli, podanej w argumencie.

Trochę pewnie pokręciłem, ale mam nadzieje że chodź część z mojego bełkotu zrozumiesz (IMG:style_emoticons/default/wink.gif)

EDIT: nie wiedziałem czy mój post się wczoraj dodał, bo niestety forum padło..

Ten post edytował by_ikar 20.01.2012, 08:56:27
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 13:14