From e5454b769d44a34af423bf87ac8a740bf8c20341 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期二, 29 四月 2025 13:25:29 +0800
Subject: [PATCH] Merge branch 'dev' into dev_tides

---
 src/store/modules/user.js |  197 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 131 insertions(+), 66 deletions(-)

diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 63e6ba2..21024b4 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,106 +1,171 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
-import { isHttp, isEmpty } from "@/utils/validate"
-import defAva from '@/assets/images/profile.jpg'
+import { login, logout, getInfo, LoginBySSO, tideLogin } from "@/api/login";
+import { getToken, setToken, removeToken } from "@/utils/auth";
+import { isHttp, isEmpty } from "@/utils/validate";
+import defAva from "@/assets/images/profile.jpg";
+import Vue from "vue";
 
 const user = {
   state: {
     token: getToken(),
-    id: '',
-    name: '',
-    avatar: '',
+    id: "",
+    name: "",
+    avatar: "",
+    nickName: "",
+    nameEn: "",
+    userName: "",
     roles: [],
-    permissions: []
+    permissions: [],
   },
 
   mutations: {
     SET_TOKEN: (state, token) => {
-      state.token = token
+      state.token = token;
     },
     SET_ID: (state, id) => {
-      state.id = id
+      state.id = id;
     },
     SET_NAME: (state, name) => {
-      state.name = name
+      state.name = name;
     },
     SET_AVATAR: (state, avatar) => {
-      state.avatar = avatar
+      state.avatar = avatar;
+    },
+    SET_NICKNAME: (state, nickName) => {
+      state.nickName = nickName;
+    },
+    SET_NAMEEN: (state, nameEn) => {
+      state.nameEn = nameEn;
+    },
+    SET_USERNAME: (state, userName) => {
+      state.userName = userName;
     },
     SET_ROLES: (state, roles) => {
-      state.roles = roles
+      state.roles = roles;
     },
     SET_PERMISSIONS: (state, permissions) => {
-      state.permissions = permissions
-    }
+      state.permissions = permissions;
+    },
   },
 
   actions: {
     // 鐧诲綍
     Login({ commit }, userInfo) {
-      const username = userInfo.username.trim()
-      const password = userInfo.password
-      const code = userInfo.code
-      const uuid = userInfo.uuid
+      const username = userInfo.username.trim();
+      const password = userInfo.password;
+      const code = userInfo.code;
+      const uuid = userInfo.uuid;
       return new Promise((resolve, reject) => {
-        login(username, password, code, uuid).then(res => {
-          setToken(res.token)
-          commit('SET_TOKEN', res.token)
-          resolve()
-        }).catch(error => {
-          reject(error)
-        })
+        login(username, password, code, uuid)
+          .then((res) => {
+            setToken(res.token);
+            commit("SET_TOKEN", res.token);
+            Vue.prototype.uploadHeader = {
+              Authorization: "Bearer " + res.token,
+            };
+            resolve();
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      });
+    },
+    // 鍗曠偣鐧诲綍
+    LoginBySSO({ commit }, accessToken) {
+      return new Promise((resolve, reject) => {
+        LoginBySSO(accessToken)
+          .then((res) => {
+            setToken(res.token);
+            commit("SET_TOKEN", res.token);
+            Vue.prototype.uploadHeader = {
+              Authorization: "Bearer " + res.token,
+            };
+            resolve();
+          })
+          .catch((error) => {
+            reject(error);
+          });
       })
     },
-
     // 鑾峰彇鐢ㄦ埛淇℃伅
     GetInfo({ commit, state }) {
       return new Promise((resolve, reject) => {
-        getInfo().then(res => {
-          const user = res.user
-          let avatar = user.avatar || ""
-          if (!isHttp(avatar)) {
-            avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar
-          }
-          if (res.roles && res.roles.length > 0) { // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
-            commit('SET_ROLES', res.roles)
-            commit('SET_PERMISSIONS', res.permissions)
-          } else {
-            commit('SET_ROLES', ['ROLE_DEFAULT'])
-          }
-          commit('SET_ID', user.userId)
-          commit('SET_NAME', user.userName)
-          commit('SET_AVATAR', avatar)
-          resolve(res)
-        }).catch(error => {
-          reject(error)
-        })
-      })
+        getInfo()
+          .then((res) => {
+            const user = res.user;
+            let avatar = user.avatar || "";
+            if (!isHttp(avatar)) {
+              avatar = isEmpty(avatar)
+                ? defAva
+                : process.env.VUE_APP_BASE_API + avatar;
+            }
+            if (res.roles && res.roles.length > 0) {
+              // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
+              commit("SET_ROLES", res.roles);
+              commit("SET_PERMISSIONS", res.permissions);
+            } else {
+              commit("SET_ROLES", ["ROLE_DEFAULT"]);
+            }
+            commit("SET_ID", user.userId);
+            commit("SET_NAME", user.userName);
+            commit("SET_AVATAR", avatar);
+            commit("SET_NICKNAME", user.nickName);
+            commit("SET_NAMEEN", user.nameEn);
+            commit("SET_USERNAME", user.userName);
+            resolve(res);
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      });
     },
 
     // 閫�鍑虹郴缁�
     LogOut({ commit, state }) {
       return new Promise((resolve, reject) => {
-        logout(state.token).then(() => {
-          commit('SET_TOKEN', '')
-          commit('SET_ROLES', [])
-          commit('SET_PERMISSIONS', [])
-          removeToken()
-          resolve()
-        }).catch(error => {
-          reject(error)
-        })
-      })
+        logout(state.token)
+          .then((res) => {
+            if (res.data) {
+              window.location.href = res.data
+            } else {
+              commit("SET_TOKEN", "");
+              commit("SET_ROLES", []);
+              commit("SET_PERMISSIONS", []);
+              removeToken();
+              resolve();
+            }
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      });
     },
 
     // 鍓嶇 鐧诲嚭
     FedLogOut({ commit }) {
-      return new Promise(resolve => {
-        commit('SET_TOKEN', '')
-        removeToken()
-        resolve()
-      })
-    }
-  }
-}
+      return new Promise((resolve) => {
+        commit("SET_TOKEN", "");
+        removeToken();
+        resolve();
+      });
+    },
 
-export default user
+    TideLogin({ commit }, code) {
+      return new Promise((resolve, reject) => {
+        tideLogin(code)
+          .then((res) => {
+            setToken(res.token);
+            commit("SET_TOKEN", res.token);
+            Vue.prototype.uploadHeader = {
+              Authorization: "Bearer " + res.token,
+            };
+            resolve();
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      });
+    },
+  },
+};
+
+export default user;

--
Gitblit v1.9.3