import { defineStore } from "pinia" import { Session } from "/@/utils/storage" import { getUserInfo, login, loginByMobile, loginBySocial, refreshTokenApi } from "/@/api/login/index" import { useMessage } from "/@/hooks/message" /** * @function useUserInfo * @returns {UserInfosStore} */ export const useUserInfo = defineStore("userInfo", { state: (): UserInfosState => ({ userInfos: { userName: "", photo: "", time: 0, roles: [], roleCodes: [], authBtnList: [], }, }), actions: { /** * 登录方法 * @function login * @async * @param {Object} data - 登录数据 * @returns {Promise} */ async login(data: any) { data.grant_type = "password" data.scope = "server" return new Promise((resolve, reject) => { login(data) .then((res) => { // 存储token 信息 Session.set("token", res.access_token) Session.set("refresh_token", res.refresh_token) resolve(res) }) .catch((err) => { useMessage().error(err?.msg || "系统异常请联系管理员") reject(err) }) }) }, /** * 手机登录方法 * @function loginByMobile * @async * @param {Object} data - 登录数据 * @returns {Promise} */ async loginByMobile(data) { return new Promise((resolve, reject) => { loginByMobile(data.mobile, data.code) .then((res) => { // 存储token 信息 Session.set("token", res.access_token) Session.set("refresh_token", res.refresh_token) resolve(res) }) .catch((err) => { useMessage().error(err?.msg || "系统异常请联系管理员") reject(err) }) }) }, /** * 社交账号登录方法 * @function loginBySocial * @async * @param {string} state - 状态 * @param {string} code - 代码 * @returns {Promise} */ async loginBySocial(state, code) { return new Promise((resolve, reject) => { loginBySocial(state, code) .then((res) => { // 存储token 信息 Session.set("token", res.access_token) Session.set("refresh_token", res.refresh_token) resolve(res) }) .catch((err) => { useMessage().error(err?.msg || "系统异常请联系管理员") reject(err) }) }) }, /** * 刷新token方法 * @function refreshToken * @async * @returns {Promise} */ async refreshToken() { return new Promise((resolve, reject) => { const refreshToken = Session.get("refresh_token") refreshTokenApi(refreshToken) .then((res) => { // 存储token 信息 Session.set("token", res.access_token) Session.set("refresh_token", res.refresh_token) resolve(res) }) .catch((err) => { useMessage().error(err.msg) reject(err) }) }) }, /** * 获取用户信息方法 * @function setUserInfos * @async */ async setUserInfos() { await getUserInfo().then((res) => { const userInfo: any = { user: res.data.sysUser, time: new Date().getTime(), roles: res.data.roles, roleCodes: res.data.roleCodes, authBtnList: res.data.permissions, } this.userInfos = userInfo }) }, }, })