mirror of
https://github.com/marcogll/ap_pos.git
synced 2026-01-13 21:25:16 +00:00
Se introduce un sistema completo de roles de usuario (admin, user) para controlar el acceso a las diferentes funcionalidades de la aplicación.
Funcionalidades y Cambios:
- Se añade la columna 'role' a la tabla de usuarios en la base de datos.
- El login ahora devuelve el rol del usuario y la sesión lo almacena.
- El Dashboard y la pestaña de Configuración ahora solo son visibles para los administradores.
- Los administradores tienen una nueva sección en "Configuración" para añadir y eliminar otros usuarios.
- Se implementan endpoints de API seguros ('/api/users') para la gestión de usuarios, accesibles solo por administradores.
- Se corrige un error que impedía la navegación entre pestañas y la interactividad general.
- Se soluciona un error de renderizado del gráfico del dashboard que causaba una sensación de "bucle".
- Se actualiza el README con instrucciones detalladas de instalación, uso y despliegue con Docker.
- Se añaden archivos Dockerfile y .dockerignore para la contenerización.
47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
const loginForm = document.getElementById('loginForm');
|
|
const errorMessage = document.getElementById('error-message');
|
|
|
|
// Redirigir si ya está autenticado
|
|
fetch('/api/check-auth')
|
|
.then(res => res.json())
|
|
.then(data => {
|
|
if (data.isAuthenticated) {
|
|
window.location.href = '/';
|
|
}
|
|
});
|
|
|
|
loginForm.addEventListener('submit', async (e) => {
|
|
e.preventDefault();
|
|
errorMessage.style.display = 'none';
|
|
|
|
const username = document.getElementById('username').value;
|
|
const password = document.getElementById('password').value;
|
|
|
|
try {
|
|
const response = await fetch('/api/login', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({ username, password }),
|
|
});
|
|
|
|
if (response.ok) {
|
|
const data = await response.json();
|
|
// Guardar el rol del usuario para usarlo en la app principal
|
|
sessionStorage.setItem('userRole', data.role);
|
|
window.location.href = '/'; // Redirigir a la página principal
|
|
} else {
|
|
const errorData = await response.json();
|
|
errorMessage.textContent = errorData.error || 'Error al iniciar sesión.';
|
|
errorMessage.style.display = 'block';
|
|
}
|
|
} catch (error) {
|
|
errorMessage.textContent = 'No se pudo conectar con el servidor.';
|
|
errorMessage.style.display = 'block';
|
|
}
|
|
});
|
|
});
|