getPermission() public method

Returns the named permission.
public getPermission ( string $name ) : null | Permission
$name string the permission name.
return null | Permission the permission corresponding to the specified name. Null is returned if no such permission.
コード例 #1
0
ファイル: RoleController.php プロジェクト: wsdslm/yii2-rbac
 public function actionAjaxChildRemove($name)
 {
     $role = $this->findRole($name);
     $namePermission = Yii::$app->request->post('permission');
     $permission = $this->auth->getPermission($namePermission);
     return $this->auth->removeChild($role, $permission) ? 'success' : 'fail';
 }
コード例 #2
0
ファイル: AssignmentModel.php プロジェクト: yii2mod/yii2-rbac
 /**
  * Revokes a roles and permissions from the user.
  *
  * @param array $items
  *
  * @return int number of successful revoke
  */
 public function revoke($items)
 {
     foreach ($items as $name) {
         $item = $this->manager->getRole($name);
         $item = $item ?: $this->manager->getPermission($name);
         $this->manager->revoke($item, $this->userId);
     }
     return true;
 }
コード例 #3
0
ファイル: Permission.php プロジェクト: apurey/cmf
 /**
  * @return bool
  */
 public function updatePermission()
 {
     if ($this->validate()) {
         $permission = $this->authManager->getPermission($this->name);
         $permission->description = $this->description;
         return $this->authManager->update($this->name, $permission);
     }
     return false;
 }
コード例 #4
0
 /**
  * @param string|Permission $permission permission item object or it's name
  * @return Permission
  */
 protected function findPermission($permission)
 {
     if ($permission instanceof Permission) {
         return $permission;
     }
     return $this->authManager->getPermission($permission);
 }
コード例 #5
0
 /**
  * @param ManagerInterface $auth
  * @param string $name
  * @param array $children
  */
 private function removePermission($auth, $name, $children = array())
 {
     $permission = $auth->getPermission($name);
     $auth->removeChildren($permission);
     if ($children) {
         foreach ($children as $childName => $childOptions) {
             $this->removePermission($auth, $childName, isset($childOptions['children']) ? $childOptions['children'] : array());
         }
     }
     $auth->remove($permission);
 }
コード例 #6
0
ファイル: AuthItemModel.php プロジェクト: yii2mod/yii2-rbac
 /**
  * Remove child from an item
  *
  * @param array $items
  *
  * @return int
  */
 public function removeChildren($items)
 {
     if ($this->_item !== null) {
         foreach ($items as $name) {
             $child = $this->manager->getPermission($name);
             if (empty($child) && $this->type == Item::TYPE_ROLE) {
                 $child = $this->manager->getRole($name);
             }
             $this->manager->removeChild($this->_item, $child);
         }
     }
     return true;
 }
コード例 #7
0
ファイル: RoleForm.php プロジェクト: yujin1st/yii2-user
 /**
  * @param bool $validate
  * @return bool
  */
 public function save($validate = true)
 {
     if ($validate && !$this->validate()) {
         return false;
     }
     if ($this->isNewRecord) {
         $this->role = $this->auth->createRole($this->name);
         $this->role->description = $this->description;
         if (!$this->auth->add($this->role)) {
             return false;
         }
     } else {
         $this->role->name = $this->name;
         $this->role->description = $this->description;
         if (!$this->auth->update($this->oldName, $this->role)) {
             return false;
         }
         $this->auth->removeChildren($this->role);
     }
     foreach ($this->actions as $action) {
         $this->auth->addChild($this->role, $this->auth->getPermission($action));
     }
     return true;
 }
コード例 #8
0
ファイル: Role.php プロジェクト: apurey/cmf
 /**
  * @param string $name
  * @param array $permissions
  * @param array $roles
  * @return bool
  */
 public function updateRole($name, array $permissions, array $roles)
 {
     if ($this->validate()) {
         $object = $this->authManager->getRole($name);
         $object->description = $this->description;
         if ($this->authManager->update($name, $object)) {
             $this->authManager->removeChildren($object);
             foreach ($permissions as $permission) {
                 $this->authManager->addChild($object, $this->authManager->getPermission($permission));
             }
             foreach ($roles as $role) {
                 $this->authManager->addChild($object, $this->authManager->getRole($role));
             }
             return true;
         }
     }
     return false;
 }
コード例 #9
0
 /**
  * Remove permissions.
  */
 protected function removePermissions()
 {
     if (!($permissions = ArrayHelper::getValue($this->rbac, 'permissions'))) {
         return;
     }
     $this->_permissions = [];
     foreach ($permissions as $name => $data) {
         if (!($permission = $this->_auth->getPermission($name))) {
             continue;
         }
         if (($childName = ArrayHelper::getValue($data, 'child')) && ($child = $this->_auth->getPermission($childName))) {
             $this->_auth->removeChild($permission, $child);
         }
         if ($ruleClass = ArrayHelper::getValue($data, 'rule')) {
             $rule = Yii::createObject($ruleClass);
             $this->_auth->remove($rule);
         }
         $this->_auth->remove($permission);
         $this->_permissions[$name] = $permission;
     }
 }