Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa Autoryzacji
Black-Berry
post
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Napisałem klasę do autoryzacji. Wzorowałem się trochę na Zend_Auth i artykułach z Internetu. Zastanawiam się czy czegoś przypadkiem nie przeoczyłem. Takie są moje metody z klasy:

  1. <?php
  2. //authorization
  3.    $user->authorization->addRole('banned');
  4.    $user->authorization->addRole('guest');
  5.    $user->authorization->addRole('user', 'quest'); //druga zmienna to dziedziczenie
  6.    $user->authorization->addRole('member', 'user');
  7.    $user->authorization->addRole('moderator', 'member');
  8.    $user->authorization->addRole('administrator');
  9.    //-----------------
  10.    $user->authorization->addResource('admin_menu', array('view', 'show'));
  11.    $user->authorization->addResource('admin_panel', array('view'));
  12.    $user->authorization->addResource('structure_item', array('view', 'add', 'update', 'delete')); //2 argument to tablica mozliwych akcji
  13.    $user->authorization->addResource('user_account', array('view', 'add', 'update', 'delete'));
  14.    //-----------------
  15.    $user->authorization->allow('guest', 'structure_item', 'view'); //3 zmienne oznaczaja allow dla konkretnej akcji
  16.    $user->authorization->allow('user', 'user_account', 'view');
  17.    $user->authorization->allow('user', 'admin_menu'); //2 zmienne to dostep do wszystkich akcji z zasobu
  18.    $user->authorization->deny('user', 'admin_menu', 'show');
  19.    $user->authorization->allow('member', 'admin_menu', 'show');
  20.    $user->authorization->allow('member', 'user_account', array('add', 'update')); //lista akcji 'allow' jako 3 argument
  21.    $user->authorization->allow('moderator', 'structure_item');
  22.    $user->authorization->deny('moderator', 'user_account', 'add');
  23.    $user->authorization->allow('administrator'); //1 zmienna to pelny dostep do wszystkiego
  24.    $user->authorization->deny('banned');
  25. ?>


Czy taki sposób obejmuje wszystkie mozliwe problemy jakie mogą mi się przytrafić z autoryzacją. Próbowałem już innych metod np grupami dostepowymi ale okazały się nietrafne. Nie chciałbym już do tego wracać. Czy to jest rozwiązanie 'ostateczne' ?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zapraszam do dyskusji.

Ten post edytował Black-Berry 16.02.2009, 12:08:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
cinekz
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 6
Dołączył: 15.06.2006

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


A jaki jest sens tworzenia takiej klasy?
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. <?php
  2. $user->authorization->addRole('user', 'quest'); //druga zmienna to dziedziczenie
  3. ?>


dziedziczenie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) tzn (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Czy nie lepiej było by
Kod
array('view', 'add', 'update', 'delete')

zastąpić to jakimś kodem odpowiadającym za daną akcję.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #4





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


@cinekz Dziwne pytanie. Autoryzacja to raczej coś co się przydaje bardzo często.

@skowron-line Dodając nowego usera nie dodaję akcji. Lista możliwych akcji jest dodawana do zasobu.

Z dziedziczeniem chodzi o to że jeśli miałbys opisać jakąś rolę w języku naturalnym powiedziałbyś:
Cytat
"Użytkownik to w zasadzie to samo co gość"

  1. <?php
  2. $user->authorization->addRole('user', 'quest');
  3. ?>

Cytat
"Z tą różnicą że użytkownik ma dodatkowo pełny dostęp do newsów"

  1. <?php
  2. $user->authorization->allow('user', 'news'); // nie podaje listy akcji co oznacza ze użytkownik ma dostęp do wszystkich akcji
  3. $user->authorization->deny('user', 'news', 'delete'); //jeśli nei chce zeby użytkownik usuwał newsy, odbieram mu pojedynczą akcję
  4. ?>


Cytat
Oraz użytkownik może dodawać edytować artykuły

  1. <?php
  2. $user->authorization->allow('user', 'article', 'update');
  3. ?>


Ten post edytował Black-Berry 16.02.2009, 14:55:59
Go to the top of the page
+Quote Post
megawebmaster
post
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 17
Dołączył: 8.11.2008
Skąd: Libiąż

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


Pewien sposób to jest. Chociaż chyba wolałbym zapisać co komu wolno, w jednej linijce, co by łatwiej można było zmienić. A nie myśleć co kto może (IMG:http://forum.php.pl/style_emoticons/default/biggrin.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: 23.08.2025 - 04:39