/** * Fill permissions from config */ protected function fillPermissions() { $this->authManager->removeAllPermissions(); $this->authManager->removeAllRules(); foreach ($this->getConfig('permissions') as $permissionConfig) { $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); } } }