UnisKB/ui/src/stores/modules/login.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-04-16 11:10:00 +00:00
import { defineStore } from 'pinia'
import { type Ref } from 'vue'
2025-04-25 08:27:13 +00:00
import loginApi from '@/api/user/login'
import type { LoginRequest } from '@/api/type/login'
import useUserStore from './user'
2025-04-16 11:10:00 +00:00
2025-04-25 08:27:13 +00:00
const useLoginStore = defineStore('login', {
state: () => ({
2025-04-16 11:10:00 +00:00
token: '',
userAccessToken: '',
}),
actions: {
2025-04-25 08:27:13 +00:00
getToken(): String | null {
if (this.token) {
return this.token
}
const user = useUserStore()
return user.userType === 1 ? localStorage.getItem('token') : this.getAccessToken()
},
getAccessToken() {
const token = sessionStorage.getItem(`${this.userAccessToken}-accessToken`)
if (token) {
return token
}
const local_token = localStorage.getItem(`${token}-accessToken`)
if (local_token) {
return local_token
}
return localStorage.getItem(`accessToken`)
},
async asyncLogin(data: LoginRequest, loading?: Ref<boolean>) {
2025-05-06 02:13:52 +00:00
return loginApi.login(data).then((ok) => {
this.token = ok?.data?.token
localStorage.setItem('token', ok?.data?.token)
2025-04-25 08:27:13 +00:00
const user = useUserStore()
2025-04-28 07:23:25 +00:00
return user.profile(loading)
2025-04-25 08:27:13 +00:00
})
},
},
2025-04-16 11:10:00 +00:00
})
export default useLoginStore