Ja bih ti savetovao da probaš sa nekim gotovim rešenjem, npr.
Zend_Acl komponentom. Nju, kao i sve druge komponente ZF-a možeš da koristiš potpuno samostalno i nezavisno od ostatka framework-a, uz eventualno neke
dependency-e od kojih ta komponenta zavisi.
Zend_Acl je po mom mišljenju jedna od najkorisnijih komponenti Zend Framework-a, komponenta kakvu nema nijedan drugi framework (neka me neko ispravi ako grešim). Ključni pojmovi su
resursi,
role i
privilegije. Sve se svodi na princip da neka rola može imati pristup nekom resursu sa određenim privilegijama. Pritom, te tri stvari su maksimalno apstrakovane, u smislu da resurs može biti praktično bilo šta, fajl, red u bazi, mrežni resurs, šta god. Dakle na developeru je da postavi ACL prema svojim potrebama. Evo jednog primera iz dokumentacije, čisto da vidiš kako to uopšte izgleda i kako se Zend_Acl koristi:
Code:
$acl = new Zend_Acl();
$acl->addRole(new Zend_Acl_Role('guest'))
->addRole(new Zend_Acl_Role('member'))
->addRole(new Zend_Acl_Role('admin'));
$parents = array('guest', 'member', 'admin');
$acl->addRole(new Zend_Acl_Role('someUser'), $parents);
$acl->add(new Zend_Acl_Resource('someResource'));
$acl->deny('guest', 'someResource');
$acl->allow('member', 'someResource');
echo $acl->isAllowed('someUser', 'someResource') ? 'allowed' : 'denied';
Ovde imaš još jedan bolji primer iz prakse, gde se Zend_Acl koristi za definisanje prava pristupa u okviru nekog CMS-a.
Preporučujem ti da baciš pogled i na
ovo Zend_Acl poglavlje u manual-u, koje opisuje još jednu veoma korisnu dodatnu funkcionalnost ove komponente, a to je pisanje dodatnih conditional assert-a, koji se mogu "zakačiti" na svaki ACL rule kojeg definišeš, čime mogućnosti postaju zaista neograničene.
