38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import { defineStore } from "pinia";
|
|
import { getMyInfo } from "@/api/user";
|
|
|
|
export const useUserStore = defineStore("user", {
|
|
state: () => ({
|
|
token: uni.getStorageSync("access_token") || "",
|
|
refreshToken: uni.getStorageSync("refresh_token") || "",
|
|
userInfo: null,
|
|
isLoggedIn: !!uni.getStorageSync("access_token"),
|
|
}),
|
|
actions: {
|
|
setTokens(accessToken, refreshToken) {
|
|
this.token = accessToken;
|
|
this.refreshToken = refreshToken;
|
|
this.isLoggedIn = true;
|
|
uni.setStorageSync("access_token", accessToken);
|
|
uni.setStorageSync("refresh_token", refreshToken);
|
|
},
|
|
async fetchUserInfo() {
|
|
try {
|
|
const data = await getMyInfo();
|
|
this.userInfo = data;
|
|
} catch (e) {
|
|
console.error("获取用户信息失败", e);
|
|
}
|
|
},
|
|
logout() {
|
|
this.token = "";
|
|
this.refreshToken = "";
|
|
this.userInfo = null;
|
|
this.isLoggedIn = false;
|
|
uni.removeStorageSync("access_token");
|
|
uni.removeStorageSync("refresh_token");
|
|
uni.reLaunch({ url: "/pages/login/index" });
|
|
},
|
|
},
|
|
});
|