Example #1
0
 /**
  * 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);
         }
     }
 }
Example #2
0
 /**
  * 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('permission', 'p')->leftJoin('p', 'role_permission', 'rp', "rp.{$options->getPermissionJoinColumn()} = p.{$options->getPermissionIdColumn()}")->leftJoin('p', 'role', 'r', "rp.{$options->getRoleJoinColumn()} = r.{$options->getRoleIdColumn()}");
     foreach ($builder->execute() as $row) {
         if ($rbac->hasRole($row['role'])) {
             $rbac->getRole($row['role'])->addPermission($row['permission']);
         }
     }
 }
Example #3
0
 /**
  * Load roles at RBAC creation.
  *
  * @param Event $e
  * @return array
  */
 public function loadRoles(Event $e)
 {
     $builder = new \Doctrine\DBAL\Query\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);
 }
Example #4
0
 /**
  * Load roles into RBAC on load.
  *
  * @param Event $e
  */
 public function loadRoles(Event $e)
 {
     $rbac = $e->getRbac();
     $roles = $this->options->getRoles();
     $result = array();
     foreach ((array) $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);
 }
Example #5
0
 /**
  * Load permissions into roles.
  *
  * @abstract
  * @param Event $e
  * @return void
  */
 public function isGranted(Event $e)
 {
     $granted = false;
     $rbac = $e->getRbac();
     $role = $e->getRole();
     $permission = $e->getPermission();
     if ($rbac->hasRole($role) && $rbac->getRole($role)->hasPermission($permission)) {
         return;
     }
     $this->load($rbac, $role, $permission);
 }