public function actionView($id) { $model = new AssignmentForm(); $model->setScenario('auth'); $permissions = []; $app = []; $authManager = Yii::$app->authManager; if ($model->load(Yii::$app->request->post()) && $model->validate()) { foreach ($model->getAttributes() as $key => $value) { if (empty($value)) { $model->{$key} = []; } } //Revokes all roles from a user. try { $authManager->revokeAll($id); //角色 if (is_array($model->roles)) { foreach ($model->roles as $name) { $item = $authManager->getRole($name); $authManager->assign($item, $id); } } //权限 $roles = ArrayHelper::merge($model->permissions, $model->app); if (is_array($roles)) { foreach ($roles as $name) { $item = $authManager->getPermission($name); $authManager->assign($item, $id); } } } catch (\Exception $e) { Yii::$app->session->setFlash('fail', $e->getMessage()); $this->refresh(); Yii::$app->end(); } Yii::$app->session->setFlash('success', '授权成功'); $this->redirect(['index']); } $roles = $authManager->getRoles(); $roles = ArrayHelper::map($roles, 'name', 'name'); foreach ($authManager->getPermissions() as $name => $role) { if ($role->name[0] == '/') { $permissions[$name] = $role->description; } elseif (substr($role->name, 0, 3) == 'app') { $app[$name] = $role->description; } } foreach ($authManager->getAssignments($id) as $name => $item) { if ($name[0] == '/') { $model->permissions[$authManager->getPermission($name)->description] = $name; } elseif (substr($name, 0, 3) == 'app') { $model->app[$name] = $name; } else { $model->roles[$name] = $name; } } $permissions = Tools::serializeRoutes($permissions); return $this->render('view', ['model' => $model, 'roles' => $roles, 'permissions' => $permissions, 'app' => $app]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = App::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'cp_id' => $this->cp_id, 'active' => $this->active]); $query->andFilterWhere(['like', 'app_name', $this->app_name])->andFilterWhere(['like', 'app_id', $this->app_id])->andFilterWhere(['like', 'app_secret', $this->app_secret])->andFilterWhere(['like', 'app_code', $this->app_code])->andFilterWhere(['like', 'version', $this->version]); $query->andWhere(['in', 'app_code', Tools::getPrevApp()]); return $dataProvider; }
<?php $this->title = '修改路由'; $this->params['breadcrumbs'] = \backend\components\Tools::buildBreadcrumbs($this, $this->title); ?> <div class="panel panel-default own-panel"> <div class="panel-heading"> 修改路由 <span class="pull-right own-toggle"> <a class="glyphicon glyphicon-chevron-up"></a> </span> </div> <div class="panel-body"> <?php echo $this->render('_form', ['model' => $model]); ?> </div> </div>
public function actionView($id) { $model = new AuthPermissionForm(); $model->setScenario('auth'); $result = ['Platforms' => [], 'App' => [], 'Permissions' => [], 'Routes' => []]; $authManager = Yii::$app->authManager; $parent = $authManager->getPermission($id); if ($model->load(Yii::$app->request->post()) && $model->validate()) { $authManager->removeChildren($parent); try { if (is_array($model->permissions)) { foreach ($model->permissions as $item) { if ($item == $id) { continue; } $child = $authManager->getPermission($item); $authManager->addChild($parent, $child); } } if (is_array($model->routes)) { foreach ($model->routes as $item) { $child = $authManager->getPermission($item); $authManager->addChild($parent, $child); } } if (is_array($model->app)) { foreach ($model->app as $item) { $child = $authManager->getPermission($item); $authManager->addChild($parent, $child); } } if (is_array($model->platforms)) { foreach ($model->platforms as $item) { $child = $authManager->getPermission($item); $authManager->addChild($parent, $child); } } } catch (\Exception $e) { Yii::$app->session->setFlash('fail', $e->getMessage()); $this->refresh(); Yii::$app->end(); } Yii::$app->session->setFlash('success', '授权成功'); $this->redirect(['index']); } foreach ($authManager->getPermissions() as $name => $role) { if ($name === $id) { continue; } if (empty($term) or strpos($name, $term) !== false) { if (substr($name, 0, 3) === 'app') { $result['App'][$name] = $role->description; } elseif ($name[0] === '/') { $result['Routes'][$name] = $role->description; } elseif (substr($name, 0, 8) === 'platform') { $result['Platforms'][$name] = $role->description; } else { $result['Permissions'][$name] = $role->description; } } } foreach ($authManager->getChildren($id) as $name => $item) { if (substr($name, 0, 3) === 'app') { $model->app[$name] = $name; } elseif ($name[0] === '/') { $model->routes[$name] = $name; } elseif (substr($name, 0, 8) === 'platform') { $model->platforms[$name] = $name; } else { $model->permissions = $name; } } $routes = Tools::serializeRoutes($result['Routes']); return $this->render('view', ['model' => $model, 'routes' => $routes, 'permissions' => $result['Permissions'], 'app' => $result['App'], 'platforms' => $result['Platforms']]); }
public function actionView($id, $term = '') { $model = new RoleAuthForm(); $model->roles = [$id => $id]; $model->setScenario('auth'); if ($model->load(Yii::$app->request->post()) && $model->validate()) { foreach ($model->getAttributes() as $key => $value) { if (empty($value)) { $model->{$key} = []; } } $roles = ArrayHelper::merge($model->roles, $model->routes, $model->permissions, $model->app, $model->platforms); $manager = Yii::$app->getAuthManager(); $parent = $manager->getRole($id); $manager->removeChildren($parent); foreach ($roles as $role) { if ($role == $id) { continue; } $child = $manager->getRole($role); $child = $child ?: $manager->getPermission($role); $manager->addChild($parent, $child); } Yii::$app->session->setFlash('success', "修改 {$id} 权限成功"); $this->redirect(['index']); } $result = ['Roles' => [], 'Permissions' => [], 'Routes' => [], 'App' => [], 'Platforms' => []]; $authManager = Yii::$app->authManager; $children = array_keys($authManager->getChildren($id)); if (empty($children)) { throw new ErrorException('cannot find id ' . $id); } $children[] = $id; foreach ($authManager->getRoles() as $name => $role) { if (empty($term) or strpos($name, $term) !== false) { $result['Roles'][$name] = $name; //角色权限 } } foreach ($authManager->getPermissions() as $name => $role) { if (empty($term) or strpos($name, $term) !== false) { if (substr($name, 0, 3) === 'app') { //游戏权限 $result['App'][$name] = $role->description; } elseif ($name[0] === '/') { //路由权限 $result['Routes'][$name] = $role->description; } elseif (substr($name, 0, 8) === 'platform') { //地区权限 $result['Platforms'][$name] = $role->description; } else { //权限组 $result['Permissions'][$name] = $role->description; } } } foreach ($authManager->getChildren($id) as $name => $child) { if (empty($term) or strpos($name, $term) !== false) { if ($child->type == Item::TYPE_ROLE) { $model->roles[$name] = $name; } else { if (substr($name, 0, 3) === 'app') { $model->app[$name] = $name; } elseif ($name[0] === '/') { $model->routes[$name] = $name; } elseif (substr($name, 0, 8) === 'platform') { $model->platforms[$name] = $name; } else { $model->permissions = $name; } } } } $routes = Tools::serializeRoutes($result['Routes']); return $this->render('view', ['result' => $result, 'model' => $model, 'routes' => $routes]); }