| | |
| | | import { defineStore } from 'pinia'; |
| | | import { store } from '@/store'; |
| | | import { getToken, setToken, removeToken, removeUserInfo, setUserInfo, getUserInfo } from '@/utils'; |
| | | import { |
| | | getToken, |
| | | setToken, |
| | | removeToken, |
| | | removeUserInfo, |
| | | setUserInfo, |
| | | getUserInfo, |
| | | md5Encrypt, |
| | | } from '@/utils'; |
| | | import { resetRouter, router } from '@/router'; |
| | | import { useTagsViewStoreHook } from './tagsView'; |
| | | import * as accountServices from '@/services/api/Account'; |
| | | import * as userServices from '@/services/api/User'; |
| | | import { usePermissionStoreHook } from './permission'; |
| | | import { getAccountInfoFromAccessToken, AccountInfo } from '@bole-core/core'; |
| | | import { useClearSubModule } from '@/hooks'; |
| | | import { myClient } from '@/constants/query'; |
| | | import * as authServices from '@/services/api/auth'; |
| | | |
| | | export interface UserState { |
| | | token: string; |
| | | userInfo: API.IdentityModelTokenCacheItem; |
| | | accountInfo: Partial<AccountInfo>; |
| | | name: string; |
| | | userInfo: API.PasswordLoginCommandCallback; |
| | | } |
| | | |
| | | function getDefaultState() { |
| | | const accessToken = getToken(); |
| | | const userInfo = getUserInfo(); |
| | | const accountInfo = getAccountInfoFromAccessToken(accessToken); |
| | | |
| | | return { |
| | | token: accessToken, |
| | | name: accountInfo.name, |
| | | accountInfo: accountInfo || {}, |
| | | userInfo: userInfo || {}, |
| | | } as UserState; |
| | | } |
| | |
| | | return state.userInfo; |
| | | }, |
| | | |
| | | userId(state) { |
| | | return state.accountInfo.sub; |
| | | }, |
| | | // userId(state) { |
| | | // return state.accountInfo.sub; |
| | | // }, |
| | | }, |
| | | actions: { |
| | | setToken(token: string) { |
| | | this.token = token; |
| | | setToken(token); |
| | | }, |
| | | setName(name: string) { |
| | | this.name = name; |
| | | }, |
| | | setUserInfo(userInfo: API.IdentityModelTokenCacheItem) { |
| | | setUserInfo(userInfo: API.PasswordLoginCommandCallback) { |
| | | this.userInfo = userInfo; |
| | | setUserInfo(userInfo); |
| | | }, |
| | | setAccountInfo(accountInfo: Partial<AccountInfo>) { |
| | | this.accountInfo = accountInfo; |
| | | }, |
| | | |
| | | // 用户登入 |
| | | loginByUsername(data: API.AccessRequestDto) { |
| | | return new Promise<void>((resolve, reject) => { |
| | | userServices |
| | | .getTokenForWeb(data, { showLoading: false }) |
| | | .then((res) => { |
| | | if (res) { |
| | | console.log('res: ', res); |
| | | this.setToken(res.accessToken); |
| | | |
| | | const accountInfo = getAccountInfoFromAccessToken(res.accessToken); |
| | | |
| | | this.setName(accountInfo.name); |
| | | this.setAccountInfo(accountInfo); |
| | | |
| | | // 获取用户信息 |
| | | this.setUserInfo(res); |
| | | |
| | | resolve(); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }); |
| | | async loginByUsername(params: API.PasswordLoginCommand) { |
| | | let res = await authServices.authPasswordLogin( |
| | | { |
| | | ...params, |
| | | password: md5Encrypt(params.password), |
| | | type: EnumUserType.Operation, |
| | | clientType: EnumClientType.PcWeb, |
| | | }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | if (res) { |
| | | this.setToken(res.accessToken); |
| | | this.setUserInfo(res); |
| | | } |
| | | }, |
| | | |
| | | // 登出 清空缓存 |
| | |
| | | Object.assign(this, getDefaultState()); |
| | | }, |
| | | |
| | | refreshToken(params: API.AccessRefreshToken) { |
| | | return new Promise<API.IdentityModelTokenCacheItem>( |
| | | // eslint-disable-next-line no-async-promise-executor |
| | | async (resolve, reject) => { |
| | | try { |
| | | const res = await accountServices.getTokenByRefreshToken(params, { |
| | | showLoading: false, |
| | | }); |
| | | if (res) { |
| | | this.setToken(res.accessToken); |
| | | this.setUserInfo(res); |
| | | resolve(res); |
| | | return; |
| | | } |
| | | reject('出错了'); |
| | | } catch (error) { |
| | | reject(error); |
| | | } |
| | | } |
| | | ); |
| | | async refreshToken(params: API.AccessRefreshToken) { |
| | | return Promise.resolve({ |
| | | accessToken: '1222', |
| | | expiresIn: 1000 * 60 * 24 * 60, |
| | | creationTime: '2025-08-04 00:00:00', |
| | | refreshToken: '1222', |
| | | }); |
| | | // return new Promise<API.IdentityModelTokenCacheItem>( |
| | | // // eslint-disable-next-line no-async-promise-executor |
| | | // async (resolve, reject) => { |
| | | // try { |
| | | // const res = await accountServices.getTokenByRefreshToken(params, { |
| | | // showLoading: false, |
| | | // }); |
| | | // if (res) { |
| | | // this.setToken(res.accessToken); |
| | | // this.setUserInfo(res); |
| | | // resolve(res); |
| | | // return; |
| | | // } |
| | | // reject('出错了'); |
| | | // } catch (error) { |
| | | // reject(error); |
| | | // } |
| | | // } |
| | | // ); |
| | | }, |
| | | }, |
| | | }); |