protected function getChirlrenOfRole($role = null)
 {
     if ($role) {
         // Get Children
         $children = AuthItemChild::findAll(['parent' => $role]);
         $result = [];
         foreach ($children as $child) {
             $result[] = $child->child;
         }
         return $result;
     } else {
         return null;
     }
 }
Exemple #2
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 #3
0
 public function actionUpdaterole()
 {
     $updateRoles = Yii::$app->request->get('listRoles');
     $roles = json_decode($updateRoles);
     if (is_array($roles) and !empty($roles)) {
         \app\modules\account\models\AuthItemChild::updateTreeRole($roles);
     }
 }