Explorar el Código

fix: 登陆相关逻辑修复1/2

laiqi hace 1 año
padre
commit
2d03c23831

+ 1 - 1
.vscode/settings.json

@@ -50,7 +50,7 @@
     "editor.defaultFormatter": "esbenp.prettier-vscode"
     "editor.defaultFormatter": "esbenp.prettier-vscode"
   },
   },
   "[typescript]": {
   "[typescript]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
+    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
   },
   },
   "[json]": {
   "[json]": {
     "editor.defaultFormatter": "esbenp.prettier-vscode"
     "editor.defaultFormatter": "esbenp.prettier-vscode"

+ 37 - 8
apps/web-ele/src/api/core/auth.ts

@@ -11,17 +11,46 @@ export namespace AuthApi {
 
 
   /** 登录接口返回值 */
   /** 登录接口返回值 */
   export interface LoginResult {
   export interface LoginResult {
-    bmid: number;
-    bm: null | string;
-    token: string;
-    gw: string;
-    workerid: string;
+    /**
+     * 用户名
+     */
+    account: string;
+    /**
+     * 用户id
+     */
     accountid: string;
     accountid: string;
-    timeout: number;
+    /**
+     * 部门
+     */
+    bm: null | string;
+    /**
+     * 部门id
+     */
+    bmid: number;
+    /**
+     * 角色列表
+     */
+    grouplist: string;
+    /**
+     * 昵称
+     */
     nickname: string;
     nickname: string;
-    account: string;
+    /**
+     * 权限列表
+     */
     popedom: string;
     popedom: string;
-    grouplist: string;
+    /**
+     * 过期时间
+     */
+    timeout: number;
+    /**
+     * 令牌
+     */
+    token: string;
+    /**
+     * 职员id
+     */
+    workerid: string;
   }
   }
 
 
   export interface RefreshTokenResult {
   export interface RefreshTokenResult {

+ 3 - 1
apps/web-ele/src/api/core/menu.ts

@@ -6,5 +6,7 @@ import { requestClient } from '#/api/request';
  * 获取用户所有菜单
  * 获取用户所有菜单
  */
  */
 export async function getAllMenusApi() {
 export async function getAllMenusApi() {
-  return requestClient.get<RouteRecordStringComponent[]>('/menu/all');
+  return requestClient.post<RouteRecordStringComponent[]>(
+    '/api/query/list?pagevalue=7',
+  );
 }
 }

+ 3 - 2
apps/web-ele/src/router/guard.ts

@@ -92,8 +92,9 @@ function setupAccessGuard(router: Router) {
 
 
     // 生成路由表
     // 生成路由表
     // 当前登录用户拥有的角色标识列表
     // 当前登录用户拥有的角色标识列表
-    const userInfo = userStore.userInfo || (await authStore.fetchUserInfo());
-    const userRoles = userInfo.roles ?? [];
+    const userInfo = (userStore.userInfo ||
+      (await authStore.fetchUserInfo())) as any;
+    const userRoles = userInfo?.grouplist ?? [];
 
 
     // 生成菜单和路由
     // 生成菜单和路由
     const { accessibleMenus, accessibleRoutes } = await generateAccess({
     const { accessibleMenus, accessibleRoutes } = await generateAccess({

+ 17 - 12
apps/web-ele/src/store/auth.ts

@@ -11,9 +11,8 @@ import { ElNotification } from 'element-plus';
 import { defineStore } from 'pinia';
 import { defineStore } from 'pinia';
 
 
 import {
 import {
-  getAccessCodesApi,
+  // getAccessCodesApi,
   getLoginCaptchaApi,
   getLoginCaptchaApi,
-  getUserInfoApi,
   loginApi,
   loginApi,
   logoutApi,
   logoutApi,
 } from '#/api';
 } from '#/api';
@@ -26,6 +25,8 @@ export const useAuthStore = defineStore('auth', () => {
 
 
   const loginLoading = ref(false);
   const loginLoading = ref(false);
 
 
+  const userStorage = useStorage('user');
+
   /**
   /**
    * 异步处理登录操作
    * 异步处理登录操作
    * Asynchronously handle the login process
    * Asynchronously handle the login process
@@ -66,6 +67,7 @@ export const useAuthStore = defineStore('auth', () => {
       // "grouplist": "1"
       // "grouplist": "1"
 
 
       const { token: accessToken } = res;
       const { token: accessToken } = res;
+      userStorage.setItem(res);
 
 
       // 如果成功获取到 accessToken
       // 如果成功获取到 accessToken
       if (accessToken) {
       if (accessToken) {
@@ -73,12 +75,14 @@ export const useAuthStore = defineStore('auth', () => {
         accessStore.setAccessToken(accessToken);
         accessStore.setAccessToken(accessToken);
 
 
         // 获取用户信息并存储到 accessStore 中
         // 获取用户信息并存储到 accessStore 中
-        const [fetchUserInfoResult, accessCodes] = await Promise.all([
-          fetchUserInfo(),
-          getAccessCodesApi(),
-        ]);
+        const fetchUserInfoResult = (await fetchUserInfo()) as any;
+        const accessCodes = fetchUserInfoResult.popedom;
+        // const [fetchUserInfoResult, accessCodes] = await Promise.all([
+        //   fetchUserInfo(),
+        //   getAccessCodesApi(),
+        // ]);
 
 
-        userInfo = fetchUserInfoResult;
+        userInfo = fetchUserInfoResult as any;
 
 
         userStore.setUserInfo(userInfo);
         userStore.setUserInfo(userInfo);
         accessStore.setAccessCodes(accessCodes);
         accessStore.setAccessCodes(accessCodes);
@@ -88,7 +92,7 @@ export const useAuthStore = defineStore('auth', () => {
         } else {
         } else {
           onSuccess
           onSuccess
             ? await onSuccess?.()
             ? await onSuccess?.()
-            : await router.push(userInfo.homePath || DEFAULT_HOME_PATH);
+            : await router.push(userInfo?.homePath || DEFAULT_HOME_PATH);
         }
         }
 
 
         if (userInfo?.realName) {
         if (userInfo?.realName) {
@@ -129,10 +133,11 @@ export const useAuthStore = defineStore('auth', () => {
   }
   }
 
 
   async function fetchUserInfo() {
   async function fetchUserInfo() {
-    let userInfo: null | UserInfo = null;
-    userInfo = await getUserInfoApi();
-    userStore.setUserInfo(userInfo);
-    return userInfo;
+    const userInfoData = userStorage.getItem();
+    // let userInfo: null | UserInfo = null;
+    // userInfo = await getUserInfoApi();
+    userStore.setUserInfo(userInfoData as any);
+    return userInfoData;
   }
   }
 
 
   function $reset() {
   function $reset() {

+ 11 - 20
packages/@core/base/typings/src/basic.d.ts

@@ -8,26 +8,17 @@ type SelectOption = BasicOption;
 type TabOption = BasicOption;
 type TabOption = BasicOption;
 
 
 interface BasicUserInfo {
 interface BasicUserInfo {
-  /**
-   * 头像
-   */
-  avatar: string;
-  /**
-   * 用户昵称
-   */
-  realName: string;
-  /**
-   * 用户角色
-   */
-  roles?: string[];
-  /**
-   * 用户id
-   */
-  userId: string;
-  /**
-   * 用户名
-   */
-  username: string;
+  account: string;
+  accountid: string;
+  bm: null | string;
+  bmid: number;
+  grouplist: string;
+  gw: string;
+  nickname: string;
+  popedom: string;
+  timeout: number;
+  token: string;
+  workerid: string;
 }
 }
 
 
 type ClassType = Array<object | string> | object | string;
 type ClassType = Array<object | string> | object | string;

+ 30 - 10
packages/stores/src/modules/user.ts

@@ -3,25 +3,45 @@ import { acceptHMRUpdate, defineStore } from 'pinia';
 interface BasicUserInfo {
 interface BasicUserInfo {
   [key: string]: any;
   [key: string]: any;
   /**
   /**
-   * 头像
+   * 用户名
    */
    */
-  avatar: string;
+  account: string;
   /**
   /**
-   * 用户昵称
+   * 用户id
    */
    */
-  realName: string;
+  accountid: string;
   /**
   /**
-   * 用户角色
+   * 部门
    */
    */
-  roles?: string[];
+  bm: null | string;
   /**
   /**
-   * 用户id
+   * 部门id
    */
    */
-  userId: string;
+  bmid: number;
   /**
   /**
-   * 用户名
+   * 角色列表
+   */
+  grouplist: string;
+  /**
+   * 昵称
+   */
+  nickname: string;
+  /**
+   * 权限列表
+   */
+  popedom: string;
+  /**
+   * 过期时间
+   */
+  timeout: number;
+  /**
+   * 令牌
+   */
+  token: string;
+  /**
+   * 职员id
    */
    */
-  username: string;
+  workerid: string;
 }
 }
 
 
 interface AccessState {
 interface AccessState {

+ 1 - 13
packages/types/src/user.ts

@@ -2,19 +2,7 @@ import type { BasicUserInfo } from '@vben-core/typings';
 
 
 /** 用户信息 */
 /** 用户信息 */
 interface UserInfo extends BasicUserInfo {
 interface UserInfo extends BasicUserInfo {
-  /**
-   * 用户描述
-   */
-  desc: string;
-  /**
-   * 首页地址
-   */
-  homePath: string;
-
-  /**
-   * accessToken
-   */
-  token: string;
+  [key: string]: any;
 }
 }
 
 
 export type { UserInfo };
 export type { UserInfo };