| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /*
- * @Author: ChenYaJin
- * @Date: 2023-07-04 11:07:44
- * @LastEditors: LiZhiWei
- * @LastEditTime: 2026-01-09 16:41:58
- * @Description: 登录相关状态
- */
- import {
- setToken as setTokenCache,
- getToken as getTokenCache,
- setRefreshToken,
- getRefreshToken,
- setUuIdSave,
- } from '~/utils/auth'
- import { postLogin, postRegister, getAccountInfo, postAccountInfo } from '~/api/user/login'
- import type { ILogin, IAccount, ILoginToken } from '~/models/login'
- import { useUserStore } from './user'
- export interface LoginState {
- token: string
- refreshToken: string
- isAccessTokenNoWorking: boolean // accessToken是否过期
- timer: unknown
- isShowAccount: boolean // 是否显示账号信息
- accountInfo: IAccount
- }
- export const useLoginStore = defineStore('login', {
- state: (): LoginState => {
- return {
- token: '',
- refreshToken: '',
- isAccessTokenNoWorking: false,
- timer: '',
- isShowAccount: false,
- accountInfo: {},
- }
- },
- getters: {
- getToken(): string {
- return this.token || getTokenCache() || ''
- },
- getRefreshToken(): string {
- return this.refreshToken || getRefreshToken() || ''
- },
- isLogin(): boolean {
- return !!this.token || !!getTokenCache()
- },
- isAccessTokenExpire(): boolean {
- return this.isAccessTokenNoWorking
- },
- },
- actions: {
- setAccountClose(flag: boolean) {
- this.isShowAccount = flag
- },
- setToken(info: string) {
- this.token = info ?? ''
- setTokenCache(info)
- },
- setRefreshToken(info: string) {
- this.refreshToken = info ?? ''
- setRefreshToken(info)
- },
- // 登录
- login(loginForm: ILogin) {
- return new Promise((resolve, reject) => {
- postLogin(loginForm)
- .then((res) => {
- this.isAccessTokenNoWorking = false
- const data = res.data
- this.setToken(data.accessToken)
- this.setRefreshToken(data.refreshToken)
- setUuIdSave(data.uid)
- resolve(res.data)
- })
- .catch((error: Error) => {
- reject(error)
- })
- })
- },
- // 注册
- register(registerForm: IAccount) {
- return new Promise((resolve, reject) => {
- postRegister(registerForm)
- .then((res) => {
- resolve(res.data)
- })
- .catch((error: Error) => {
- reject(error)
- })
- })
- },
- updateToken(data: ILoginToken) {
- this.setToken(data.accessToken)
- },
- // 退出登录
- logout() {
- return new Promise((resolve) => {
- const userStore = useUserStore()
- // 数据清理
- if (process.browser) {
- localStorage.clear()
- }
- userStore.$reset()
- this.$reset()
- resolve(1)
- })
- },
- // 获取用户账号信息
- getUserAccountInfo(uuid: string): Promise<IAccount> {
- return new Promise((resolve, reject) => {
- if (this.accountInfo.name) {
- resolve(this.accountInfo)
- return
- }
- getAccountInfo(uuid)
- .then((res) => {
- const data = res.data
- this.accountInfo = data
- resolve(res.data)
- })
- .catch((error: Error) => {
- reject(error)
- })
- })
- },
- updateAccountInfo(data: IAccount) {
- return new Promise((resolve, reject) => {
- postAccountInfo(data)
- .then((res) => {
- this.accountInfo = {}
- resolve(res.data)
- })
- .catch((error: Error) => {
- reject(error)
- })
- })
- },
- },
- })
|