public static function afterActionModelAccess($event) { /** * @var Controller $controller */ $model = $event->sender; $controller = Yii::$app->controller; $permissionName = AuthItem::createPermissionName([$controller->module->id, $controller->id, $controller->action->id]); if (!AuthItem::checkAccess($permissionName, false, compact('model'))) { throw new HttpException(403, Yii::t('modules/rbac', 'access_denied')); } }
public static function permissionList() { $result = []; $modules = array_merge([Yii::$app], \Yii::$app->modules); foreach ($modules as $moduleName => $data) { $module = is_object($data) ? $data : Yii::$app->getModule($moduleName); $controllerFiles = FileHelper::findFiles($module->controllerPath); foreach ($controllerFiles as $file) { if (!preg_match('/.*\\/(\\w+)Controller\\.php$/', $file, $matches)) { continue; } $id = self::getRouteName($matches[1]); $controller = $module->createControllerByID($id); foreach (self::controllerActions($controller) as $action) { $result[$module->id][$controller->id][$action] = AuthItem::createPermissionName([$module->id, $controller->id, $action]); } } } ksort($result); return $result; }