Example #1
0
 public static function ifCurrentUserIsSpecificRole($role_name)
 {
     if (!$role_name) {
         return false;
     }
     $user = Yii::$app->user->identity;
     $user_id = $user['id'];
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $role_ids = [];
     if (!empty($roles)) {
         foreach ($roles as $role) {
             $role_ids[] = $role['role_id'];
         }
     }
     $user_role_names = [];
     $user_roles = AdminRole::find()->asArray()->where(['in', 'role_id', $role_ids])->all();
     if (!empty($user_roles)) {
         foreach ($user_roles as $one) {
             $user_role_names[] = $one['role_name'];
         }
     }
     if (in_array($role_name, $user_role_names)) {
         return true;
     }
     return false;
 }
 public function getActiveMenuIds()
 {
     if ($this->_active_menu_ids === null) {
         $user = Yii::$app->user->identity;
         $user_id = $user['id'];
         $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
         $role_ids = [];
         if (!empty($roles)) {
             foreach ($roles as $one) {
                 $role_ids[] = $one['role_id'];
             }
         }
         //var_dump($user);exit;
         $menu_ids = [];
         if (!empty($role_ids)) {
             $AdminRoleMenus = AdminRoleMenu::find()->asArray()->select(['menu_id'])->where(['in', 'role_id', $role_ids])->all();
             if (!empty($AdminRoleMenus)) {
                 foreach ($AdminRoleMenus as $menu) {
                     $menu_ids[] = $menu['menu_id'];
                 }
             }
         }
         $menu_ids = array_unique($menu_ids);
         $this->_active_menu_ids = $menu_ids;
     }
     return $this->_active_menu_ids;
 }
 public function getCurrentRoleKeys()
 {
     $identity = Yii::$app->user->identity;
     $user_id = $identity->id;
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $AdminRole = new AdminRole();
     # 缓存读取role key
     if (!CCache::get(CCache::ALL_ROLE_KEY_CACHE_HANDLE)) {
         if (!CCache::set(CCache::ALL_ROLE_KEY_CACHE_HANDLE, $AdminRole->getAllRoleMenuRoleKey())) {
             throw new InvalidValueException('save role key to cache error,check your cache if it can write!');
         }
     }
     $roleKeys = CCache::get(CCache::ALL_ROLE_KEY_CACHE_HANDLE);
     //var_dump($roleKeys);exit;
     //$role_ids = [];
     $menu_roles = [];
     if (!empty($roles)) {
         foreach ($roles as $role) {
             $role_id = $role['role_id'];
             $menu_role = isset($roleKeys[$role_id]) ? $roleKeys[$role_id] : [];
             $menu_roles = array_merge($menu_roles, $menu_role);
         }
     }
     return $menu_roles;
 }
 public function getUserRoleIds()
 {
     $user = $this->_one;
     $user_id = $user['id'];
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $role_ids = [];
     if (!empty($roles)) {
         foreach ($roles as $r) {
             $role_ids[] = $r['role_id'];
         }
     }
     return $role_ids;
 }
 public function delete()
 {
     //$request_param 		= CRequest::param();
     //$this->_param		= $request_param;
     //$this->initParam();
     if ($role_id = CRequest::param($this->_paramKey)) {
         $model = AdminRole::findOne([$this->_paramKey => $role_id]);
         if ($model->role_id) {
             # 不允许删除admin
             if (CConfig::param("is_demo")) {
                 if ($model->role_id == 4) {
                     echo json_encode(["statusCode" => "300", "message" => 'demo版本,不允许编辑admin']);
                     exit;
                 }
             }
             $innerTransaction = Yii::$app->db->beginTransaction();
             try {
                 $model->delete();
                 # 删除这个role 对应的所有关联的菜单
                 AdminRoleMenu::deleteAll(['role_id' => $role_id]);
                 AdminUserRole::deleteAll(['role_id' => $role_id]);
                 $innerTransaction->commit();
             } catch (Exception $e) {
                 $innerTransaction->rollBack();
             }
             echo json_encode(["statusCode" => "200", "message" => 'Delete Success!']);
             exit;
         } else {
             echo json_encode(["statusCode" => "300", "message" => "role_id => {$role_id} , is not exist"]);
             exit;
         }
     } else {
         if ($ids = CRequest::param($this->_paramKey . 's')) {
             $id_arr = explode(",", $ids);
             $innerTransaction = Yii::$app->db->beginTransaction();
             try {
                 # 不允许删除admin
                 if (CConfig::param("is_demo")) {
                     if (in_array(4, $id_arr)) {
                         echo json_encode(["statusCode" => "300", "message" => 'demo版本,不允许删除admin']);
                         $innerTransaction->rollBack();
                         exit;
                     }
                 }
                 AdminRole::deleteAll(['in', 'role_id', $id_arr]);
                 # 删除这个role 对应的所有关联的菜单
                 AdminUserRole::deleteAll(['in', 'role_id', $id_arr]);
                 $innerTransaction->commit();
             } catch (Exception $e) {
                 $innerTransaction->rollBack();
             }
             echo json_encode(["statusCode" => "200", "message" => "{$ids} Delete Success!"]);
             exit;
         }
     }
     echo json_encode(["statusCode" => "300", "message" => "role_id or ids Param is not Exist!"]);
     exit;
 }