import { useTabsStore } from "./tab"; export const useUserStore = defineStore( "user", () => { // 상태 const isLoggedIn = ref(false); const user = ref<{ userId?: string; name?: string; } | null>(null); // 권한 스토어 참조 const permissionsStore = usePermissionsStore(); // 탭 스토어 참조 const tabsStore = useTabsStore(); 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; // 로그인 성공 시 // 탭 초기화 tabsStore.resetTabs(); // 권한 데이터 가져오기 await permissionsStore.fetchPermissions(); return { success, data }; } else { return { success: false, error: description, }; } }; const logout = async () => { try { const response = await useApi("/members/logout", { method: "post", loadingMessage: "로그아웃 처리중...", handleError: false, showAlert: false, }); console.log("response:", response); } catch (error) { console.error(error); } finally { user.value = null; isLoggedIn.value = false; tabsStore.resetTabs(); permissionsStore.clearPermissions(); // 로그인 페이지로 이동 await navigateTo("/login"); } }; return { // 상태 isLoggedIn, user, // 액션 login, logout, }; }, { persist: true, } );