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