Beispiel #1
0
 /**
  * Checks if current user has a given permission
  *
  * @param __Permission $permission
  * @return bool
  */
 public function hasPermission(__Permission &$permission)
 {
     $roles_collection = new __RolesCollection();
     $roles_collection->fromArray($this->getRoles());
     $roles_equivalent_permission = $roles_collection->getEquivalentPermission();
     return $permission->isJuniorPermissionOf($roles_equivalent_permission);
 }
 /**
  * Returns a permission identified by the given id.
  *
  * @param unknown_type $permission_id
  * @return unknown
  */
 public function &getPermission($permission_id)
 {
     $return_value = null;
     $permission_id = strtoupper($permission_id);
     if (key_exists($permission_id, $this->_permissions)) {
         $return_value = $this->_permissions[$permission_id];
     } else {
         //lazy initialization of special permission PERMISSION_ALL:
         if ($permission_id == 'PERMISSION_ALL') {
             //PERMISSION_ALL:
             $return_value = new __Permission('PERMISSION_ALL', 0);
             foreach ($this->_permissions as &$permission) {
                 $return_value->addPermission($permission);
                 unset($permission);
             }
             $this->_permissions[$return_value->getId()] =& $return_value;
         } else {
             throw __ExceptionFactory::getInstance()->createException('ERR_UNKNOW_PERMISSION_ID', array($permission_id));
         }
     }
     return $return_value;
 }
Beispiel #3
0
 /**
  * This method add a {@link __Permission} instance to current role.
  *
  * @param __Permission $permission The permission to add to the current role
  */
 public function addPermission(__Permission &$permission)
 {
     $this->_permissions[$permission->getId()] =& $permission;
     $this->_recalculateEquivalentPermission();
 }
 /**
  * Checks if active roles have a given permission
  *
  * @param integer $permission
  * @return unknown
  */
 public final function hasPermission(__Permission $permission)
 {
     $return_value = false;
     if ($permission == null) {
         $return_value = true;
     } else {
         $active_roles_equivalent_permission = $this->_active_roles->getEquivalentPermission();
         if ($permission->isJuniorPermissionOf($active_roles_equivalent_permission)) {
             $return_value = $permission->checkPermission();
         }
     }
     return $return_value;
 }
 public final function addJuniorPermission(__Permission &$junior_permission)
 {
     $this->_junior_permissions[$junior_permission->getId()] =& $junior_permission;
     $this->_binary_representation = $this->_binary_representation | $junior_permission->_binary_representation;
 }