public function loadRoles(Event $e) { $roles = $this->roleMapper->findAll(); $rbac = $e->getRbac(); foreach ($roles as $role) { $rbac->addRole($role); } }
/** * Load permissions into roles. * * @param Event $rbac */ public function loadPermissions(Event $e) { $rbac = $e->getRbac(); foreach ((array) $this->options->getPermissions() as $role => $permissions) { foreach ((array) $permissions as $permission) { $rbac->getRole($role)->addPermission($permission); } } }
/** * Load permissions into roles. * * @abstract * @param Event $e * @return void */ public function isGranted(Event $e) { $rbac = $e->getRbac(); $role = $e->getRole(); $permission = $e->getPermission(); if ($rbac->hasRole($role) && $rbac->getRole($role)->hasPermission($permission)) { return; } $this->load($rbac, $role, $permission); }
/** * Load permissions into roles. * * @param Event $e */ public function loadPermissions(Event $e) { $rbac = $e->getRbac(); $builder = new \Doctrine\DBAL\Query\QueryBuilder($this->connection); $options = $this->options; $builder->select("\n p.{$options->getPermissionNameColumn()} AS permission,\n r.{$options->getRoleNameColumn()} AS role\n ")->from($options->getPermissionTable(), 'p')->leftJoin('p', $options->getRoleJoinTable(), 'rp', "rp.{$options->getPermissionJoinColumn()} = p.{$options->getPermissionIdColumn()}")->leftJoin('p', $options->getRoleTable(), 'r', "rp.{$options->getRoleJoinColumn()} = r.{$options->getRoleIdColumn()}"); foreach ($builder->execute() as $row) { if ($rbac->hasRole($row['role'])) { $rbac->getRole($row['role'])->addPermission($row['permission']); } } }
/** * Load roles at RBAC creation. * * @param Event $e * @return array */ public function loadRoles(Event $e) { $builder = new QueryBuilder($this->connection); $options = $this->options; $builder->select("role.{$options->getNameColumn()} AS name, parent.{$options->getNameColumn()} AS parent")->from($options->getTable(), 'role')->leftJoin('role', $options->getTable(), 'parent', "role.{$options->getJoinColumn()} = parent.{$options->getIdColumn()}"); $result = $builder->execute(); $roles = array(); foreach ($result as $row) { $parentName = isset($row['parent']) ? $row['parent'] : 0; unset($row['parent']); $roles[$parentName][] = $row['name']; } $this->recursiveRoles($e->getRbac(), $roles); }
/** * Load roles into RBAC on load. * * @param Event $e */ public function loadRoles(Event $e) { $rbac = $e->getRbac(); $roles = $this->options->getRoles(); $result = array(); foreach ($roles as $role => $parents) { if (is_numeric($role)) { $role = $parents; $parents = array(); } if (empty($parents)) { $result[0][] = $role; } foreach ($parents as $parent) { $result[$parent][] = $role; } } $this->recursiveRoles($rbac, $result); }
/** * @return ZendRbac */ public function getRbac() { if (null === $this->rbac) { $this->rbac = new ZendRbac(); $event = new Event(); $event->setRbac($this->rbac); $this->getEventManager()->trigger(Event::EVENT_LOAD_ROLES, $event); $this->getEventManager()->trigger(Event::EVENT_LOAD_PERMISSIONS, $event); } return $this->rbac; }