zouzs 1 долоо хоног өмнө
parent
commit
99e9a1a8a9

+ 13 - 0
src/api/user.ts

@@ -86,3 +86,16 @@ export const refreshTokenApi = (data?: object) => {
     data
   });
 };
+
+/**
+ * 获取用户信息
+ */
+export const getUserInfo = (data?: object) => {
+  return http.request<BasicResponseModel>(
+    "get",
+    baseUrlApi("system/user/getInfo"),
+    {
+      data
+    }
+  );
+};

+ 18 - 3
src/store/modules/user.ts

@@ -12,10 +12,17 @@ import {
   type RefreshTokenResult,
   getLogin,
   refreshTokenApi,
-  verifySmsLogin
+  verifySmsLogin,
+  getUserInfo
 } from "@/api/user";
 import { useMultiTagsStoreHook } from "./multiTags";
-import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
+import {
+  type DataInfo,
+  setToken,
+  removeToken,
+  userKey,
+  setUserInfo
+} from "@/utils/auth";
 
 export const useUserStore = defineStore("pure-user", {
   state: (): userType => ({
@@ -70,7 +77,15 @@ export const useUserStore = defineStore("pure-user", {
         const loginfn = submitType === 1 ? getLogin : verifySmsLogin;
         loginfn(data)
           .then(res => {
-            if (res?.code === 200) setToken(res.data);
+            if (res?.code === 200) {
+              setToken(res.data);
+              getUserInfo().then(response => {
+                if (response?.code === 200) {
+                  console.log(response);
+                  setUserInfo(response);
+                }
+              });
+            }
             resolve(res);
           })
           .catch(error => {

+ 15 - 8
src/utils/auth.ts

@@ -32,6 +32,12 @@ export interface DataInfo<T> {
   userModule: string;
   _businessDockingId: number;
 
+  user: {
+    avatar: string;
+    username: string;
+    nickname: string;
+  };
+
   access_token: string;
   expires_in: number;
 }
@@ -61,7 +67,6 @@ export function getToken(): DataInfo<number> {
  * 将`avatar`、`username`、`nickname`、`roles`、`permissions`、`refreshToken`、`expires`这七条信息放在key值为`user-info`的localStorage里(利用`multipleTabsKey`当浏览器完全关闭后自动销毁)
  */
 export function setToken(data: DataInfo<number>) {
-  const expires = 0;
   // const { accessToken, refreshToken } = data;
   const { access_token, expires_in } = data;
   const { isRemembered, loginDay } = useUserStoreHook();
@@ -84,7 +89,9 @@ export function setToken(data: DataInfo<number>) {
         }
       : {}
   );
+}
 
+export function setUserInfo(data: DataInfo<number>) {
   function setUserKey({ avatar, username, nickname, roles, permissions }) {
     useUserStoreHook().SET_AVATAR(avatar);
     useUserStoreHook().SET_USERNAME(username);
@@ -93,7 +100,6 @@ export function setToken(data: DataInfo<number>) {
     useUserStoreHook().SET_PERMS(permissions);
     storageLocal().setItem(userKey, {
       // refreshToken,
-      expires,
       avatar,
       username,
       nickname,
@@ -102,14 +108,15 @@ export function setToken(data: DataInfo<number>) {
     });
   }
 
-  if (data.username && data.roles) {
-    const { username, roles } = data;
+  if (data.permissions && data.roles) {
+    const { permissions, roles } = data;
+    const user = data.user;
     setUserKey({
-      avatar: data?.avatar ?? "",
-      username,
-      nickname: data?.nickname ?? "",
+      avatar: user?.avatar ?? "",
+      username: user?.username ?? "",
+      nickname: user?.nickname ?? "",
       roles,
-      permissions: data?.permissions ?? []
+      permissions
     });
   } else {
     const avatar =