| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { defineStore } from "pinia";
- import { ref } from "vue";
- import { login as apiLogin, profile, newGuest } from "@/services/api";
- import { useStorage } from "@vueuse/core";
- export const useUserStore = defineStore("user", () => {
- const token = useStorage("token", "");
- const userInfo = ref<any>({});
- const userManuallyLoggedOut = useStorage("userManuallyLoggedOut", false);
- const setToken = (newToken: string) => {
- token.value = newToken;
- };
- const setUserInfo = (info: any) => {
- userInfo.value = info;
- };
- const login = async (username: string, password: string) => {
- const response = await apiLogin(username, password);
- setToken(response.token);
- setUserInfo(response.user);
- userManuallyLoggedOut.value = false;
- return response;
- };
- const sync = async () => {
- const response = await profile();
- setUserInfo(response);
- };
- const logout = () => {
- token.value = "";
- userInfo.value = {};
- userManuallyLoggedOut.value = true;
- };
- const createGuest = async (code?: string) => {
- try {
- const response = await newGuest(code);
- setToken(response.token);
- setUserInfo(response.user);
- userManuallyLoggedOut.value = false;
- return response;
- } catch (error) {
- console.error("创建游客账号失败", error);
- return null;
- }
- };
- return {
- token,
- userInfo,
- userManuallyLoggedOut,
- setUserInfo,
- login,
- logout,
- sync,
- createGuest,
- };
- });
|