Esempio n. 1
0
 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]);
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
<?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]);
 }