Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/AbyssDevs/CUSCATLECO/llms.txt

Use this file to discover all available pages before exploring further.

El sistema CUSCATLECO utiliza un modelo de control de acceso basado en permisos. Cada usuario tiene asignado un rol que agrupa un conjunto específico de permisos; es ese conjunto de permisos —no el nombre del rol en sí— lo que determina a qué pantallas y acciones puede acceder cada persona. Existen cuatro roles operativos: Administrador, Mesero, Cajero y Cocina.

Roles disponibles

Administrador

Acceso total al sistema. Gestiona usuarios, menú, mesas, reportes y registros de auditoría.

Mesero

Toma de pedidos por mesa, gestión de reservaciones y actualización del estado de mesas.

Cajero

Cierre de pedidos y emisión de facturas electrónicas (Consumidor Final y Crédito Fiscal).

Cocina

Visualización de pedidos entrantes y actualización del estado de preparación.

Permisos por módulo

La siguiente tabla muestra qué permisos posee cada rol en cada módulo del sistema.
PermisoMóduloAdministradorMeseroCajeroCocina
ver_dashboardGeneral
gestionar_usuariosUsuarios
gestionar_rolesUsuarios
ver_menuMenú
gestionar_menuMenú
crear_pedidoPedidos
ver_pedidosPedidos
actualizar_estado_pedidoPedidos
generar_facturaFacturación
ver_reportesReportes
gestionar_reservacionesReservaciones
gestionar_clientesClientes
gestionar_mesasMesas
actualizar_estado_mesaMesas
listar_mesasMesas
ver_auditoriaRegistros

Cómo funciona el sistema de permisos

El acceso en CUSCATLECO se valida permiso a permiso, no por nombre de rol. Cuando un usuario intenta navegar a una ruta protegida o invocar un endpoint de la API, el middleware requirePermission comprueba si el arreglo de permisos cargado en la sesión incluye el permiso requerido para esa acción específica.
// Ejemplo: protección de la ruta /admin
app.get("/admin", requirePermission("ver_admin"), (req, res) => {
  res.sendFile(path.join(__dirname, "../public/views/administrador.html"));
});
Si el usuario no está autenticado, el sistema lo redirige al login (/). Si está autenticado pero le falta el permiso, recibe la página de acceso denegado (/403). Las peticiones a la API devuelven 401 o 403 en JSON según corresponda.
Los permisos de cada usuario se almacenan en la sesión al momento del inicio de sesión. Si un administrador modifica los roles o permisos de un usuario, los cambios toman efecto en la próxima sesión de ese usuario.

Sesiones y expiración

El sistema emplea sesiones del lado del servidor con una duración de 30 minutos. La cookie de sesión se renueva automáticamente con cada solicitud activa (rolling: true), por lo que el temporizador se reinicia mientras el usuario esté interactuando con la aplicación.
cookie: { maxAge: 1000 * 60 * 30 } // 30 minutos
Una vez que la sesión expira, el usuario es redirigido automáticamente a la pantalla de inicio de sesión. No existe cierre de sesión silencioso: el sistema destruye la sesión explícitamente al llamar a /logout.
Un mismo usuario puede tener asignados múltiples roles simultáneamente. Sus permisos serán la unión de todos los permisos de los roles que tenga activos.

Páginas de referencia por rol

  • Administrador — acceso completo al sistema
  • Mesero — gestión de mesas y pedidos en sala
  • Cajero — facturación y cierre de pedidos
  • Cocina — preparación y actualización de pedidos

Build docs developers (and LLMs) love