Add frontend/src/stores/auth.js

This commit is contained in:
2026-06-09 23:35:19 +00:00
parent 7561cd79d3
commit 2aeb288d80
+44
View File
@@ -0,0 +1,44 @@
import { defineStore } from 'pinia'
import axios from 'axios'
export const useAuthStore = defineStore('auth', {
state: () => ({
token: localStorage.getItem('token') || null,
user: null
}),
getters: {
isAuthenticated: (state) => !!state.token
},
actions: {
async login(username, password) {
try {
const formData = new FormData()
formData.append('username', username)
formData.append('password', password)
const response = await axios.post('/api/v1/auth/login', formData)
this.token = response.data.access_token
localStorage.setItem('token', this.token)
return true
} catch (error) {
console.error('Login failed:', error)
return false
}
},
async register(email, username, password, fullName) {
try {
await axios.post('/api/v1/auth/register', {
email, username, password, full_name: fullName
})
return true
} catch (error) {
console.error('Registration failed:', error)
return false
}
},
logout() {
this.token = null
this.user = null
localStorage.removeItem('token')
}
}
})