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(localStorage.getItem('accessToken')) const user = ref(null) // getters const isAuthenticated = computed(() => !!accessToken.value) // actions const setToken = (token) => { accessToken.value = token if (token) { localStorage.setItem('accessToken', token) } else { localStorage.removeItem('accessToken') } } 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({ name: 'startPage'}) } catch (error) { console.error('Login error:', error) } } const logout = async () => { setToken(null) user.value = null try { await apiClient.post('/user/auth/logout') } catch (error) { console.error('Logout error:', error) } router.push('/startPage') } const forceLogout = () => { setToken(null) user.value = null router.push({ name: 'startPage'}) } const register = async (email, password) => { try { const response = await apiClient.post('/user', { email, password }) if (response.data.code === 200) { router.push({ name: 'login' }) } } catch (error) { console.error('Register error:', error) } } return { accessToken, user, isAuthenticated, setToken, login, logout, forceLogout, register, } })