import { defineStore } from 'pinia' import { postLogin } from '@/api/login' import { setToken, setUserInfo, deleteToken, deleteUserInfo, setUID, deleteTenantInfo } from '@/utils/auth' import router from '@/router' import { LoginConfigType } from '@/types/request' import { Socket } from '@/utils/ws' import { getTenantCode } from '../utils/auth' import { useUserStore } from './user' export const useLoginStore = defineStore('login', { state: () => { return { token: undefined, tenantInfo: {} } }, actions: { async login(form: LoginConfigType) { const userStore = useUserStore() try { const data = await postLogin(form) setToken(data.token.token_type + ' ' + data.token.access_token) // setUID(guidUser) setUserInfo(JSON.stringify(data)) userStore.userInfo = data await Socket.start() } catch (error) { throw new Error(error.message) } }, logout() { deleteToken() deleteUserInfo() deleteTenantInfo() Socket.stop() router.replace({ path: '/login', query: { code: getTenantCode() }}) }, setTenantInfo(info: object) { this.tenantInfo = info } } })