Returns the named permission.
public getPermission ( string $name ) : null | |
||
$name | string | the permission name. |
return | null | |
the permission corresponding to the specified name. Null is returned if no such permission. |
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'; }
/** * 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; }
/** * @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; }
/** * @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); }
/** * @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); }
/** * 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; }
/** * @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; }
/** * @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; }
/** * 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; } }