import { useTabsStore } from "./tab"; export const useUserStore = defineStore( "user", () => { // 상태 const isLoggedIn = ref(false); const user = ref<{ userId?: string; name?: string; } | null>(null); const token = ref(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 = () => { user.value = null; isLoggedIn.value = false; // 권한 데이터 초기화 permissionsStore.clearPermissions(); // 탭 초기화 tabsStore.resetTabs(); useApi("/members/logout", { method: "post" }); }; const setToken = (accessToken: string) => { token.value = accessToken; }; const getToken = () => { return token; }; return { // 상태 isLoggedIn, user, token, // 액션 login, logout, setToken, getToken, }; }, { persist: true, } );