This commit is contained in:
xds
2026-03-22 13:26:18 +03:00
parent 28a5d51389
commit f98c57a433
20 changed files with 2949 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import api from '../api/client'
export const useAdminStore = defineStore('admin', () => {
const token = ref(localStorage.getItem('admin_token') || '')
const user = ref(null)
const isAuthenticated = computed(() => !!token.value)
function setAuth(tokenValue, userData) {
token.value = tokenValue
user.value = userData
localStorage.setItem('admin_token', tokenValue)
api.defaults.headers.common['Authorization'] = `Bearer ${tokenValue}`
}
function logout() {
token.value = ''
user.value = null
localStorage.removeItem('admin_token')
delete api.defaults.headers.common['Authorization']
}
// Restore auth header on init
if (token.value) {
api.defaults.headers.common['Authorization'] = `Bearer ${token.value}`
}
async function login(email, password) {
const { data } = await api.post('/admin/login', { email, password })
setAuth(data.token, { email: data.email, name: data.name })
return data
}
async function fetchMe() {
try {
const { data } = await api.get('/admin/me')
user.value = data
} catch {
logout()
}
}
return { token, user, isAuthenticated, login, logout, fetchMe, setAuth }
})