import { defineStore } from 'pinia' import { ref, computed } from 'vue' import { apiClient } from '@/api/client' import { disconnectSocket } from '@/api/socket' const TOKEN_KEY = 'iu_token' export const useAuthStore = defineStore('auth', () => { const token = ref(localStorage.getItem(TOKEN_KEY)) const username = ref(null) const isAuthenticated = computed(() => token.value !== null) async function login(user: string, password: string): Promise { const { data } = await apiClient.post('/api/auth/login', { username: user, password, }) token.value = data.access_token username.value = user localStorage.setItem(TOKEN_KEY, data.access_token) } function logout(): void { token.value = null username.value = null localStorage.removeItem(TOKEN_KEY) disconnectSocket() } return { token, username, isAuthenticated, login, logout } })