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; }