/**
* 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);
}
}
}