From 2aeb288d8065a53ae1209daa508145b369fab3d4 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Tue, 9 Jun 2026 23:35:19 +0000 Subject: [PATCH] Add frontend/src/stores/auth.js --- frontend/src/stores/auth.js | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 frontend/src/stores/auth.js diff --git a/frontend/src/stores/auth.js b/frontend/src/stores/auth.js new file mode 100644 index 0000000..6eca7d7 --- /dev/null +++ b/frontend/src/stores/auth.js @@ -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') + } + } +})