Roles de Usuario
El sistema INVENTO implementa un sistema básico de roles que permite diferenciar entre administradores con acceso completo y empleados con permisos limitados.Roles Disponibles
El sistema soporta dos roles principales almacenados en la tablausuarios:
Admin
Administrador del sistemaPermisos completos:
- Gestión completa de productos (CRUD)
- Registrar entradas y salidas
- Eliminar productos
- Modificar precios y códigos
- Gestionar usuarios (futuro)
Empleado
Usuario operativoPermisos limitados:
- Ver lista de productos
- Registrar movimientos de inventario
- Consultar stock disponible
- Sin permisos para eliminar
- Sin acceso a configuración
Estado actual: El sistema almacena y muestra el rol del usuario (
$_SESSION['rol']), pero actualmente no implementa restricciones de acceso basadas en roles. Todas las páginas son accesibles para cualquier usuario autenticado.Estructura de la Tabla Usuarios
Los usuarios se almacenan en la tablausuarios con la siguiente estructura:
Identificador único del usuario. Clave primaria auto-incremental.
Nombre completo del usuario.
Dirección de correo electrónico. Se usa como nombre de usuario para login.
Contraseña del usuario. Actualmente se almacena en texto plano (no recomendado para producción).
Rol del usuario que determina sus permisos en el sistema.
Almacenamiento del Rol en Sesión
Cuando un usuario inicia sesión (auth/login.php:17-18), el sistema almacena su rol en la sesión:
auth/login.php
- Mostrar el rol del usuario en la interfaz
- Controlar qué opciones del menú se muestran
- Validar permisos antes de ejecutar acciones sensibles
Mostrar Rol del Usuario
La página principal muestra el rol del usuario autenticado (index.php:18-19):
index.php
Implementar Control de Acceso por Roles
Aunque el sistema actual no implementa restricciones por roles, aquí te mostramos cómo hacerlo:Proteger Funciones Específicas
Puedes restringir acciones específicas según el rol:Ocultar Opciones del Menú
Muestra u oculta opciones del menú según el rol:productos/listar.php
Matriz de Permisos Recomendada
Esta tabla muestra los permisos sugeridos para cada rol:| Funcionalidad | Admin | Empleado |
|---|---|---|
| Ver productos | ✅ | ✅ |
| Crear productos | ✅ | ❌ |
| Editar productos | ✅ | ❌ |
| Eliminar productos | ✅ | ❌ |
| Ver stock | ✅ | ✅ |
| Registrar entradas | ✅ | ✅ |
| Registrar salidas | ✅ | ✅ |
| Ver historial de movimientos | ✅ | ✅ |
| Gestionar usuarios | ✅ | ❌ |
| Modificar configuración | ✅ | ❌ |
| Ver reportes | ✅ | ✅ |
| Exportar datos | ✅ | ❌ |
Crear Usuarios
Actualmente, el sistema no incluye una interfaz para crear usuarios. Puedes crear usuarios directamente en la base de datos:Crear un Usuario Admin
Crear un Usuario Empleado
Implementar Gestión de Usuarios
Para una implementación completa, considera crear un módulo de gestión de usuarios:Crear página de listado de usuarios
usuarios/listar.php - Muestra todos los usuarios registrados con su rol.Validación de Permisos con Funciones Helper
Para evitar repetir código, crea funciones helper:helpers.php
productos/eliminar.php
Auditoría de Acciones por Usuario
Para rastrear quién realizó qué acciones, modifica tus tablas para incluir el usuario:Agregar Usuario a Movimientos
movimientos/entrada.php
Roles Adicionales (Futuro)
Para sistemas más complejos, considera agregar roles adicionales:Supervisor
Permisos intermedios entre Admin y Empleado. Puede ver reportes y aprobar movimientos.
Almacenista
Especializado en movimientos de inventario. Acceso completo a entradas/salidas pero limitado en productos.
Contador
Solo lectura. Acceso a reportes y exportación de datos para contabilidad.
Solución de Problemas
El rol no se muestra correctamente
El rol no se muestra correctamente
Verifica que:
- La columna
rolen la tablausuariostenga el valor correcto - El login esté guardando
$_SESSION['rol']correctamente - No estés sobrescribiendo
$_SESSION['rol']en ningún lugar - La sesión no haya expirado
Las restricciones por rol no funcionan
Las restricciones por rol no funcionan
El sistema actual no implementa restricciones automáticamente. Debes:
- Agregar validaciones manualmente en cada página sensible
- Usar las funciones helper sugeridas arriba
- Verificar que
$_SESSION['rol']exista antes de comparar
No puedo cambiar el rol de un usuario
No puedo cambiar el rol de un usuario
Para cambiar el rol de un usuario existente:El cambio tomará efecto la próxima vez que el usuario inicie sesión.
Seguridad
Próximos Pasos
Autenticación
Aprende cómo funciona el sistema de login
Configuración
Configura opciones de seguridad avanzadas
Estructura de Base de Datos
Entiende la tabla de usuarios
Contribuir
Ayuda a implementar gestión de usuarios