export const useUserStore = defineStore( "user", () => { // 상태 const isLoggedIn = ref(false); const user = ref<{ userId?: string; name?: string; } | null>(null); const token = ref(null); // 추후 제거 필요 const isAdmin = true; interface LoginData { userId: string; name: string; } const login = async (userId: string, password: string) => { const { success, data, description } = await useApi< ApiResponse >("/login", { method: "post", body: { userId, password }, }); if (success) { user.value = data; isLoggedIn.value = true; return { success, data }; } else { return { success: false, error: description, }; } }; const logout = () => { user.value = null; isLoggedIn.value = false; useApi("/members/logout", { method: "post" }); }; const checkAuth = () => { // 페이지 로드 시 로컬 스토리지에서 사용자 정보 복원 const savedUser = localStorage.getItem("user"); const savedToken = localStorage.getItem("token"); if (savedUser && savedToken) { user.value = JSON.parse(savedUser); token.value = savedToken; isLoggedIn.value = true; } }; const setToken = (accessToken: string) => { token.value = accessToken; }; const getToken = () => { return token; }; // 초기 인증 상태 확인 if (import.meta.client) { checkAuth(); } return { // 상태 isLoggedIn, user, token, // 게터 isAdmin, // 액션 login, logout, checkAuth, setToken, getToken, }; }, { persist: true, } );