feat(authStore): creado almacenamiento para los datos de autenticación de un usuario

parent 1e11b8bf
Showing with 61 additions and 0 deletions
import { defineStore } from 'pinia';
import api from "@/services/api";
import { authService } from "@/services/auth";
export const useAuthStore = defineStore('auth', {
state: () => ({
user: null,
token: localStorage.getItem('jwt_token') || null,
isAuthenticated: !!localStorage.getItem('jwt_token'),
}),
actions: {
async login(credentials) {
try {
const { token, email, role } = await authService.login(credentials);
this.token = token;
this.user = { email, role };
this.isAuthenticated = true;
localStorage.setItem('jwt_token', token);
localStorage.setItem('user_email', email);
localStorage.setItem('user_role', role);
api.defaults.headers.common['Authorization'] = `Bearer ${token}`
return true;
} catch (error) {
console.error('Error al iniciar sesión:', error);
let errorMsg = 'Error';
if (error.response && error.response.data && error.response.data.message) {
errorMsg = error.response.data.message;
}
throw new Error(errorMsg);
}
},
logout() {
this.token = null;
this.user = null;
this.isAuthenticated = false;
localStorage.removeItem('jwt_token');
localStorage.removeItem('user_email');
localStorage.removeItem('user_role');
delete api.defaults.headers.common['Authorization'];
},
initializeAuth() {
const token = localStorage.getItem('jwt_token');
const email = localStorage.getItem('user_email');
const role = localStorage.getItem('user_role');
if (token && email && role) {
this.token = token;
this.user = { email, role };
this.isAuthenticated = true;
api.defaults.headers.common['Authorization'] = `Bearer ${token}`;
}
}
}
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment