1)zdefiniowanie, stworzenie ról - niech będzie to
-administrator
-zlecacz
-kontroler
-instalator
<?php $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('admin')) ->addRole(new Zend_Acl_Role('kontroler')) ->addRole(new Zend_Acl_Role('zlecacz')) ->addRole(new Zend_Acl_Role('instalator')); ?>
2)na podstawie parametru z bazy danych przypisuje się aktualnie zalogowanego użytkownika do jakieś roli
3)zależy jak to ma zdefiniowane kontrolery tak sobie przypisuje uprawnienia, ja mam na zasadzie "obiektów" np uzytkownik, plik, zlecenie itp - do każdej akcji z tych obiektów dana rola ma lub nie ma dostępu - np do edycji swoich danych (z kontrolera użytkownik) ma dostepk każdy, a do dodawanie np tylko admin itp itd,
no to sobie trzeba zdefiniować zasoby - tyle ile trzeba dla uzytkowników
<?php $acl->add(new Zend_Acl_Resource('user/add')); $acl->add(new Zend_Acl_Resource('user/edit')) ?>
4) i potem sprawdza się czy ma sie dostęp
<?php $controler = $this->_request->getControllerName(); $action = $this->_request->getActionName(); if(!$acl->isAllowed($rola ', $controler.'/'.$action)) $this->_redirect('auth/error403); ?>
ale jaka z tego jest korzyść skoro mozna sobie XML-a zrobić
<acl> <!--role--> <admin> <!--kontrolery--> <controler name="user"> <!--akcje--> <action>add</action> <action>edit</action> </controler > </admin> </acl>
i potem za pomocą parsera to sobie sprawdzić?
może coś źle mówię, nie wiem, ale wydaje mi się, że taki sposób z XML-em jest szybszy do napisania i wygodniejszy
ps - jeśli coś źle napisałem o zasadach tworzenia kontroli dostępu i samej kontroli Zend_Acl to prosze o wyprowadzenie mnie z błędu