import { defineStore } from 'pinia'; import { computed, ref } from 'vue'; import { apiClient } from '@/services/apiClient'; import router from '@/router/index.js'; export const useAuthStore = defineStore('auth', () => { // state const accessToken = ref(null); const user = ref(null); // getters const isAuthenticated = computed(() => !!accessToken.value); // actions const setToken = (token) => { accessToken.value = token; }; const login = async (email, password) => { try { const response = await apiClient.post('/user/auth/login', { email, password }); const { access_token, user: userData } = response; setToken(access_token); user.value = userData || null; router.push('/'); } catch (error) { console.error('Login error:', error); } }; const logout = async () => { accessToken.value = null; user.value = null; try { await apiClient.post('/user/auth/logout'); } catch (error) { console.error('Logout error:', error); } router.push('/startPage'); }; const forceLogout = () => { accessToken.value = null; user.value = null; router.push('/startPage'); }; return { accessToken, user, isAuthenticated, setToken, login, logout, forceLogout, }; });