public function __construct() { /* * fetch all roles */ $table = new Wbroles(); $roles = $table->fetchAllRoles(); unset($table); // Loop roles and put them in an assoc array by ID $roleArray = array(); foreach ($roles as $r) { $role = new Zend_Acl_Role($r['name']); // If inherit_name isn't null, have the role inherit from that, otherwise no inheriting if ($r['inherit_name'] !== null && $r['inherit_name'] !== $r['name']) { $this->addRole($role, $r['inherit_name']); } else { $this->addRole($role); } $roleArray[$r['id']] = $role; } /* * fetch all resources * because the Resource must be unique identifier */ $table = new Wbresources(); $resources = $table->fetchAllResources(); foreach ($resources as $r) { $resource = new Zend_Acl_Resource($r['name']); $this->addResource($resource); } /* * establish a correspondence: roles => resources */ $resources_roles = $table->fetchAllResourcesAndRoles(); foreach ($resources_roles as $r) { if ($r['role_id'] !== null) { $role = $roleArray[$r['role_id']]; // the Resource must be unique identifier $this->allow($role, $r['resource_name']); } } // Администратор не наследует ни от кого, но обладает всеми привилегиями $this->allow('root_role'); }
public function roleIndexAction() { $roles = new Wbroles(); $this->view->result = $roles->fetchAllRoles(); $this->view->title = 'Webacula :: ' . $this->view->translate->_('Roles'); }