2025-04-30 01:43:23 +08:00
|
|
|
import {defineStore} from "pinia";
|
|
|
|
|
import {authenticationApi, loginCode, loginPass, weChatLogin} from "@/api/system/login";
|
|
|
|
|
import {AUTH_KEY} from "@/config";
|
|
|
|
|
|
|
|
|
|
interface UserState {
|
|
|
|
|
userdata: any;
|
|
|
|
|
token: string;
|
|
|
|
|
auth: string[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const useUserStore = defineStore({
|
|
|
|
|
id: "app-user",
|
|
|
|
|
state: (): UserState => ({
|
|
|
|
|
//用户数据
|
|
|
|
|
userdata: '',
|
|
|
|
|
// token
|
|
|
|
|
token: '',
|
|
|
|
|
//用户注册信息
|
|
|
|
|
auth: [],
|
|
|
|
|
}),
|
|
|
|
|
getters: {
|
|
|
|
|
getToken(): string {
|
|
|
|
|
return this.token;
|
|
|
|
|
},
|
|
|
|
|
getUser(): any {
|
|
|
|
|
return this.userdata;
|
|
|
|
|
},
|
|
|
|
|
getAuth(): string[] {
|
|
|
|
|
return this.auth;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
actions: {
|
|
|
|
|
setToken(token: string) {
|
|
|
|
|
this.token = token
|
|
|
|
|
},
|
|
|
|
|
setUser(data: any) {
|
|
|
|
|
this.userdata = data;
|
|
|
|
|
},
|
|
|
|
|
setAuth(data: string[]) {
|
|
|
|
|
this.auth = data;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description: 验证码登录
|
|
|
|
|
*/
|
|
|
|
|
async codeLogin(params: { phone: number | string, code: number | string }) {
|
|
|
|
|
try {
|
|
|
|
|
const {result} = await loginCode({phone: params.phone, code: params.code});
|
|
|
|
|
this.afterLoginAction(result)
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(e)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description: 密码登录
|
|
|
|
|
*/
|
|
|
|
|
async passwordLogin(params: { name: string, password: string }) {
|
|
|
|
|
try {
|
|
|
|
|
const {result} = await loginPass({username: params.name, password: params.password});
|
|
|
|
|
this.afterLoginAction(result)
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description: 微信登录
|
|
|
|
|
*/
|
|
|
|
|
async weChatLogin(params: { code: string }) {
|
|
|
|
|
try {
|
|
|
|
|
const {result} = await weChatLogin({code: params.code})
|
|
|
|
|
this.afterLoginAction(result)
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(e)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description: 登录成功后的操作
|
|
|
|
|
*/
|
|
|
|
|
afterLoginAction(value: any) {
|
|
|
|
|
this.setUser(value)
|
|
|
|
|
if (value[AUTH_KEY]) {
|
|
|
|
|
this.setToken(value[AUTH_KEY])
|
|
|
|
|
}
|
2025-05-16 16:16:41 +08:00
|
|
|
authenticationApi({userId: value.userId}).then(({result}) => {
|
2025-04-30 01:43:23 +08:00
|
|
|
if (result) {
|
|
|
|
|
this.setAuth(result)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description: 注销
|
|
|
|
|
*/
|
|
|
|
|
logout() {
|
|
|
|
|
this.setToken('')
|
|
|
|
|
this.setUser('')
|
|
|
|
|
this.setAuth([])
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
persist: {
|
|
|
|
|
enabled: true,
|
|
|
|
|
detached: true,
|
|
|
|
|
H5Storage: localStorage
|
|
|
|
|
},
|
|
|
|
|
});
|