Sistema de Autenticación
El sistema INVENTO utiliza autenticación basada en sesiones PHP para controlar el acceso y gestionar roles de usuario. Esta guía explica cómo funciona el sistema de login, logout y control de acceso.Inicio de Sesión
Formulario de Login
El sistema presenta un formulario de login simple que solicita dos campos:Ingresar credenciales
Completa los campos requeridos:
- Correo: Dirección de email del usuario registrado
- Contraseña: Contraseña asociada a la cuenta
Estructura del Formulario
El formulario de login (auth/login.php:42-50) utiliza los siguientes campos:
auth/login.php
Proceso de Autenticación
Cuando se envía el formulario, el sistema ejecuta el siguiente proceso:1. Validación de Credenciales
El código enauth/login.php:5-27 realiza la autenticación:
auth/login.php
2. Creación de Sesión
Si las credenciales son válidas, el sistema crea una sesión con dos variables importantes:$_SESSION['usuario']: Almacena el nombre del usuario autenticado$_SESSION['rol']: Almacena el rol (“Admin” o “Empleado”)
3. Redirección
Después de autenticarse exitosamente, el usuario es redirigido a la página principal (index.php).
Mensajes de Error
El sistema muestra mensajes específicos según el tipo de error:Usuario no encontrado
Usuario no encontrado
Se muestra cuando el correo electrónico ingresado no existe en la base de datos. Verifica que:
- El correo esté escrito correctamente
- El usuario haya sido creado previamente en la tabla
usuarios
Contraseña incorrecta
Contraseña incorrecta
Se muestra cuando el correo es válido pero la contraseña no coincide. Verifica que:
- La contraseña esté escrita correctamente
- No haya espacios adicionales
- Las mayúsculas y minúsculas coincidan exactamente
Protección de Páginas
Todas las páginas del sistema están protegidas con un control de sesión. Por ejemplo, enindex.php:1-8:
index.php
- Inicia la sesión PHP con
session_start() - Verifica si existe la variable
$_SESSION['usuario'] - Si no existe (usuario no autenticado), redirige al login
- Si existe, permite el acceso a la página
Mostrar Información del Usuario
Una vez autenticado, puedes mostrar información del usuario en cualquier página:- Personalizar la interfaz con el nombre del usuario
- Mostrar u ocultar funcionalidades según el rol
- Auditar acciones realizadas por usuarios específicos
Cierre de Sesión
Para cerrar la sesión, el sistema proporciona un enlace en cada página:auth/logout.php realiza las siguientes acciones:
auth/logout.php
- Inicia la sesión para poder acceder a ella
- Destruye todas las variables de sesión con
session_destroy() - Redirige al usuario de vuelta al formulario de login
Es importante llamar a
session_start() antes de session_destroy() para que PHP pueda acceder a la sesión actual.Roles de Usuario
El sistema soporta dos roles:Admin
Acceso completo a todas las funcionalidades del sistema:
- Crear, editar y eliminar productos
- Registrar entradas y salidas
- Gestionar usuarios (futuro)
Empleado
Acceso limitado a operaciones básicas:
- Ver productos
- Registrar movimientos de inventario
- Sin permisos para eliminar
Actualmente, el sistema almacena el rol pero no implementa restricciones específicas por rol. Consulta la guía de roles de usuario para más detalles sobre cómo implementar control de acceso basado en roles.
Flujo Completo de Autenticación
Seguridad de Sesiones
Para mejorar la seguridad del sistema de autenticación:Establecer tiempo de expiración de sesión
Solución de Problemas
La sesión no persiste entre páginas
La sesión no persiste entre páginas
Verifica que:
- Todas las páginas tengan
session_start()al inicio - No haya salida antes de
session_start()(ni espacios ni HTML) - La configuración de PHP tenga habilitada
session.auto_starto usessession_start()manualmente
Error: Cannot modify header information
Error: Cannot modify header information
Este error ocurre cuando intentas usar
header() después de enviar contenido al navegador. Asegúrate de que:session_start()esté en la primera línea del archivo PHP- No haya espacios o saltos de línea antes de
<?php - No uses
echoantes deheader()
Las credenciales correctas no funcionan
Las credenciales correctas no funcionan
Verifica que:
- El usuario exista en la tabla
usuarios - La contraseña en la base de datos coincida exactamente (incluyendo mayúsculas/minúsculas)
- La conexión a la base de datos sea exitosa
- Revisa los errores de MySQL con
$conn->error
Próximos Pasos
Gestión de Productos
Aprende a crear, editar y eliminar productos
Roles de Usuario
Entiende cómo funcionan los permisos por rol
Configuración
Configura opciones de seguridad avanzadas
Solución de Problemas
Resuelve problemas comunes de autenticación