Ejemplo n.º 1
0
 /**
  * @param string|RoleInterface $role
  * @throws InvalidRoleException
  */
 private function loadRole($role)
 {
     if ($this->acl->hasRole($role)) {
         return;
     }
     $parent = null;
     if (is_string($role)) {
         $role = new GenericRole($role);
     } elseif ($role instanceof RoleProvider && ($parent = $role->getRoles())) {
         $this->loadRoles($parent);
     } elseif ($role instanceof HierarchicalRoleInterface && ($parent = $role->getParent())) {
         is_array($parent) ? $this->loadRoles($parent) : $this->loadRole($parent);
     } elseif (!$role instanceof RoleInterface) {
         throw InvalidRoleException::invalidRoleInstance($role);
     }
     $this->acl->addRole($role, $parent);
 }