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'));
     }
 }
예제 #2
0
 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;
 }