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:
<?php
//authorization
$user->authorization->addRole('banned');
$user->authorization->addRole('guest');
$user->authorization->addRole('user', 'quest'); //druga zmienna to dziedziczenie
$user->authorization->addRole('member', 'user');
$user->authorization->addRole('moderator', 'member');
$user->authorization->addRole('administrator');
//-----------------
$user->authorization->addResource('admin_menu', array('view', 'show')); $user->authorization->addResource('admin_panel', array('view')); $user->authorization->addResource('structure_item', array('view', 'add', 'update', 'delete')); //2 argument to tablica mozliwych akcji $user->authorization->addResource('user_account', array('view', 'add', 'update', 'delete')); //-----------------
$user->authorization->allow('guest', 'structure_item', 'view'); //3 zmienne oznaczaja allow dla konkretnej akcji
$user->authorization->allow('user', 'user_account', 'view');
$user->authorization->allow('user', 'admin_menu'); //2 zmienne to dostep do wszystkich akcji z zasobu
$user->authorization->deny('user', 'admin_menu', 'show');
$user->authorization->allow('member', 'admin_menu', 'show');
$user->authorization->allow('member', 'user_account', array('add', 'update')); //lista akcji 'allow' jako 3 argument $user->authorization->allow('moderator', 'structure_item');
$user->authorization->deny('moderator', 'user_account', 'add');
$user->authorization->allow('administrator'); //1 zmienna to pelny dostep do wszystkiego
$user->authorization->deny('banned');
?>
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