public function update($name, $object)
{
if ($object instanceof Item) {
if ($object->ruleName && $this->getRule($object->ruleName) === null) {
$rule = \Yii::createObject($object->ruleName);
$rule->name = $object->ruleName;
$this->addRule($rule);
}
return $this->updateItem($name, $object);
} elseif ($object instanceof Rule) {
return $this->updateRule($name, $object);
} else {
throw new InvalidParamException('Updating unsupported object type.');
}
}
/** * Fill permissions from config */ protected function fillPermissions() { foreach ($this->getConfig('permissions') as $permissionConfig) { $existingPermission = $this->authManager->getPermission($permissionConfig['name']); if ($existingPermission && $permissionConfig['name'] == $existingPermission->name) { $permission = $existingPermission; $permission->description = $permissionConfig['description']; $this->authManager->update($permissionConfig['name'], $permission); } else { $permission = $this->authManager->createPermission($permissionConfig['name']); $permission->description = $permissionConfig['description']; $this->authManager->add($permission); } if (isset($permissionConfig['rule'])) { /* @var $rule \yii\rbac\Rule */ $rule = new $permissionConfig['rule'](); $existingRule = $this->authManager->getRule($rule->name); if (!$permission->ruleName && !$existingRule) { $this->authManager->add($rule); } $permission->ruleName = $rule->name; $this->authManager->update($permissionConfig['name'], $permission); } } }