/** * @param string $id * * @return string */ public function actionView($id) { $item = $this->findModel($id); $routes = Route::find()->asArray()->all(); $permissions = Permission::find()->andWhere(['not in', Yii::$app->yee->auth_item_table . '.name', [Yii::$app->yee->commonPermissionName, $id]])->joinWith('group')->all(); $permissionsByGroup = []; foreach ($permissions as $permission) { $permissionsByGroup[@$permission->group->name][] = $permission; } $childRoutes = AuthHelper::getChildrenByType($item->name, AbstractItem::TYPE_ROUTE); $childPermissions = AuthHelper::getChildrenByType($item->name, AbstractItem::TYPE_PERMISSION); return $this->renderIsAjax('view', compact('item', 'childPermissions', 'routes', 'permissionsByGroup', 'childRoutes')); }
/** * Check if current route allowed for everyone (in commonPermission routes) * * @param string $currentFullRoute * * @return bool */ protected static function isInCommonPermission($currentFullRoute) { $commonRoutes = Yii::$app->cache->get('__commonRoutes'); if ($commonRoutes === false) { $commonRoutesDB = (new Query())->select('child')->from(Yii::$app->yee->auth_item_child_table)->where(['parent' => Yii::$app->yee->commonPermissionName])->column(); $commonRoutes = Route::withSubRoutes($commonRoutesDB, ArrayHelper::map(Route::find()->asArray()->all(), 'name', 'name')); Yii::$app->cache->set('__commonRoutes', $commonRoutes, 3600); } return in_array($currentFullRoute, $commonRoutes); }