import { defineStore } from 'pinia' import { ref, computed } from 'vue' import { api } from '@/lib/api' export const useAuthStore = defineStore('auth', () => { const token = ref(localStorage.getItem('admin_token')) const loading = ref(false) const error = ref(null) const isAuthenticated = computed(() => !!token.value) async function login(adminToken: string) { loading.value = true error.value = null try { const response = await api.post('/api/v1/admin/login', { admin_token: adminToken }) token.value = response.data.token localStorage.setItem('admin_token', response.data.token) api.defaults.headers.common['Authorization'] = `Bearer ${response.data.token}` return true } catch (err: any) { error.value = err.response?.data?.error?.message || 'Login failed' return false } finally { loading.value = false } } function logout() { token.value = null localStorage.removeItem('admin_token') delete api.defaults.headers.common['Authorization'] } function init() { if (token.value) { api.defaults.headers.common['Authorization'] = `Bearer ${token.value}` } } return { token, loading, error, isAuthenticated, login, logout, init } })