Exemple #1
0
 /**
  * Hàm xóa role dựa vào name của role.
  * Lấy ra các role con của role xóa, update các role con vào role parent của role bị xóa.
  * Khi xóa role xóa các item child của role trong bảng child.     
  */
 public function actionDeleterole()
 {
     $name = Yii::$app->request->post('name', NULL);
     // Lấy ra parent của role bị xóa.
     $role = AuthItemChild::findOne(['child' => $name]);
     /**
      * Nếu role bị xóa có parent thì update các role con theo role parent bị xóa và xóa role child là role bị xóa.
      * Ngược lại thì xóa toàn bộ child của role bị xóa.       
      */
     if ($role) {
         $auth = Yii::$app->authManager;
         // Get all permission by role
         $allPermissionByRole = $auth->getPermissionsByRole($name);
         // Get all permission by role parent and delete permission in role remove if permission in role parent.
         $allPermissionByRoleParent = $auth->getPermissionsByRole($role->parent);
         $allPermissionByRoleParent = \yii\helpers\ArrayHelper::map($allPermissionByRoleParent, 'name', 'name');
         foreach ($allPermissionByRole as $permission) {
             if (in_array($permission->name, $allPermissionByRoleParent)) {
                 AuthItemChild::deleteAll(['child' => $permission->name, 'parent' => $name]);
             }
         }
         // Lấy ra các role con của role bị xóa, và update vào role parent của role bị xóa.
         AuthItemChild::updateAll(['parent' => $role->parent], ['parent' => $name]);
         // Xóa chính nó trong bảng child.
         AuthItemChild::deleteAll(['child' => $name]);
     } else {
         AuthItemChild::deleteAll(['parent' => $name]);
     }
     // Xóa role
     AuthItem::deleteAll(['name' => $name]);
     $result = ['status' => 1, 'message' => 'Xóa vai trò thành công'];
     echo json_encode($result);
 }
Exemple #2
0
 public function actionPermission()
 {
     $role = Yii::$app->request->get('role');
     $queryParams = Yii::$app->request->getQueryParams();
     $searchModel = new AuthItem();
     $searchModel->scenario = 'search';
     $dataProvider = $searchModel->searchPermission($queryParams);
     $assign = ['dataProvider' => $dataProvider, 'searchModel' => $searchModel, 'role' => $role];
     Yii::$app->view->title = Yii::t($this->module->id, 'Child permission');
     Yii::$app->view->params['breadcrumbs'][] = ['label' => Yii::t($this->module->id, ucfirst($this->module->id)), 'url' => ['index']];
     Yii::$app->view->params['breadcrumbs'][] = Yii::$app->view->title;
     return $this->render('permission', $assign);
 }