feat: enhance authentication system with token-based login and session management

- Updated the backend to support token-based authentication, replacing basic auth.
- Added session management functions for creating, invalidating, and refreshing sessions.
- Refactored user routes to include login and logout endpoints.
- Modified frontend to handle token storage and session validation.
- Improved user experience by ensuring sessions are invalidated upon password changes.
This commit is contained in:
Omar Sánchez Pizarro
2026-01-20 00:48:49 +01:00
parent e99424c9ba
commit 19932854ca
6 changed files with 354 additions and 119 deletions

View File

@@ -351,8 +351,7 @@ const passwordForm = ref({
const isAuthenticated = computed(() => authService.hasCredentials());
const currentUser = computed(() => {
const creds = authService.getCredentials();
return creds.username || '';
return authService.getUsername() || '';
});
function formatDate(dateString) {
@@ -461,17 +460,16 @@ async function handleChangePassword() {
newPassword: passwordForm.value.newPassword,
});
passwordSuccess.value = 'Contraseña actualizada correctamente';
passwordSuccess.value = 'Contraseña actualizada correctamente. Por favor, inicia sesión nuevamente.';
// Actualizar credenciales guardadas si la nueva contraseña es para el usuario actual
const creds = authService.getCredentials();
if (creds.username === currentUser.value) {
authService.saveCredentials(currentUser.value, passwordForm.value.newPassword);
}
// Limpiar formulario después de 2 segundos
setTimeout(() => {
// Invalidar la sesión actual - el usuario deberá hacer login nuevamente
// El backend ya invalidó todas las sesiones, así que limpiamos localmente también
setTimeout(async () => {
await authService.logout();
closeChangePasswordModal();
// Recargar página para forzar nuevo login
// El evento auth-required se disparará automáticamente cuando intente cargar datos
window.location.reload();
}, 2000);
} catch (error) {
console.error('Error cambiando contraseña:', error);