Roles y permisos de cajero
HandyCafe utiliza control de acceso basado en roles (RBAC) para gestionar lo que cada miembro del personal puede ver y hacer dentro del sistema. A cada cajero se le asigna un rol y ese rol determina sus permisos exactos en toda la aplicación.
Tipos de roles
HandyCafe ofrece tres tipos de roles:
Administrador
El rol de Administrador otorga acceso sin restricciones a todas las funciones del sistema. Los administradores pueden gestionar cajeros, ver todos los reportes, modificar configuraciones y realizar cualquier operación. Este rol está destinado a propietarios de cafés y gerentes principales que necesitan control total.
Siempre existe al menos una cuenta de Administrador en el sistema. El rol de Administrador no puede eliminarse ni reducirse en permisos.
Predeterminado
El rol Predeterminado no tiene permisos especiales asignados. Un cajero con el rol Predeterminado puede iniciar sesión y realizar operaciones básicas pero no puede acceder a áreas restringidas como gestión de miembros, reportes o configuración de consolas. Utilícelo como punto de partida para nuevos empleados que solo necesitan manejar tareas básicas.
Personalizado
Los roles personalizados le permiten definir exactamente qué permisos tiene un cajero. Usted elige un nombre, establece un nivel y luego activa o desactiva marcas de permisos individuales en seis categorías. Esto le da control detallado sobre lo que cada miembro del personal puede acceder.
Categorías de permisos
HandyCafe tiene 22 marcas de permisos individuales organizadas en 6 categorías. Cada marca controla una acción o vista específica dentro del sistema.
1. Autenticación (1 marca)
| Marca | Descripción |
|---|---|
| CLIENT_LOGIN | Permite al cajero iniciar sesión en PCs cliente (iniciar sesiones en nombre de los clientes) |
Sin este permiso, un cajero no puede iniciar ni gestionar sesiones de cliente.
2. Miembros (6 marcas)
| Marca | Descripción |
|---|---|
| VIEW | Ver la lista de miembros y detalles de miembros |
| ADD | Crear nuevas cuentas de miembro |
| DELETE | Eliminar cuentas de miembro del sistema |
| UPDATE | Editar información de miembros existentes (nombre, saldo, etc.) |
| DISPLAY_EMAIL | Ver las direcciones de correo electrónico de los miembros en la lista |
| DISPLAY_GSM | Ver los números de teléfono de los miembros en la lista |
Un cajero con solo VIEW puede explorar la lista de miembros pero no puede crear, editar ni eliminar ningún miembro. Las marcas DISPLAY_EMAIL y DISPLAY_GSM controlan si la información de contacto sensible es visible. Esto es útil para el cumplimiento de privacidad donde no todo el personal debe ver datos personales.
3. Consolas (4 marcas)
| Marca | Descripción |
|---|---|
| VIEW | Ver la página de consolas y las tarjetas de estado de consolas |
| ADD | Registrar nuevas consolas de juego en el sistema |
| DELETE | Eliminar consolas del sistema |
| UPDATE | Editar detalles de consolas (nombre, dirección MAC, precios) |
4. Registros (4 marcas)
| Marca | Descripción |
|---|---|
| VIEW | Acceder a la página de registros |
| DISPLAY_FULL | Ver el historial completo de registros (todas las fechas) |
| DISPLAY_TODAY | Ver solo las entradas de registro del día de hoy |
| DELETE | Eliminar entradas de registro |
Si un cajero tiene VIEW y DISPLAY_TODAY pero no DISPLAY_FULL, solo puede ver las entradas de registro del día actual. Esto es útil para supervisores de turno que necesitan monitorear la actividad actual sin acceder a registros históricos.
5. Reportes (3 marcas)
| Marca | Descripción |
|---|---|
| PAGE_VIEW | Acceder a la página de reportes/reporte de caja |
| DISPLAY_FULL | Ver el historial completo de reportes (todas las fechas) |
| DISPLAY_TODAY | Ver solo los datos de reportes del día de hoy |
Similar a los registros, los permisos de reportes le permiten controlar si el personal puede ver el historial financiero completo o solo las cifras del día actual. Un cajero con PAGE_VIEW y DISPLAY_TODAY puede revisar las transacciones de su propio turno pero no puede acceder a datos de ingresos históricos.
6. Métodos de pago (4 marcas)
| Marca | Descripción |
|---|---|
| MANAGE | Acceder al área de gestión de métodos de pago |
| ADD | Crear nuevos métodos de pago (efectivo, tarjeta, pago móvil, etc.) |
| DELETE | Eliminar métodos de pago del sistema |
| UPDATE | Editar detalles de métodos de pago existentes |
Resumen
| Categoría | Marcas | Total |
|---|---|---|
| Autenticación | CLIENT_LOGIN | 1 |
| Miembros | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| Consolas | VIEW, ADD, DELETE, UPDATE | 4 |
| Registros | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | 4 |
| Reportes | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| Métodos de pago | MANAGE, ADD, DELETE, UPDATE | 4 |
| Total | 22 |
Cómo funcionan los permisos
Cada categoría de permisos tiene un conjunto de marcas de permisos individuales. Cada marca puede habilitarse o deshabilitarse de forma independiente usando casillas de verificación en el editor de roles.
La interfaz proporciona casillas para cada permiso. Simplemente active o desactive los permisos que desea otorgar o revocar. El sistema maneja el almacenamiento subyacente automáticamente. No necesita calcular ningún valor manualmente.
Por ejemplo, en la categoría Miembros puede habilitar o deshabilitar independientemente: VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL y DISPLAY_GSM. Un cajero con solo VIEW y UPDATE activados puede ver y editar miembros pero no puede agregar ni eliminar.
Crear una cuenta de cajero
- Navegue a Gestión > Cajeros en la aplicación del servidor.
- Haga clic en el botón Agregar cajero.
- Ingrese el nombre de usuario del cajero. Este es el que usará para iniciar sesión.
- Establezca una contraseña. Elija una contraseña segura. Esta cuenta puede tener acceso a datos financieros e información de clientes.
- Seleccione un rol del menú desplegable. Puede elegir Administrador, Predeterminado o cualquier rol personalizado que haya creado.
- Haga clic en Guardar para crear la cuenta.
El nuevo cajero ahora puede iniciar sesión en el servidor de HandyCafe usando sus credenciales.
Crear un rol personalizado
- Navegue a Gestión > Roles de cajero en la aplicación del servidor.
- Haga clic en el botón Agregar rol.
- Ingrese un nombre de rol (por ejemplo, "Supervisor de turno", "Cajero junior", "Personal nocturno").
- Establezca el nivel del rol. Los niveles más altos indican mayor autoridad. Se usa para ordenamiento de visualización y jerarquía organizacional.
- Active o desactive los permisos individuales en las seis categorías. Cada casilla corresponde a una de las 22 configuraciones de permisos.
- Haga clic en Guardar para crear el rol.
Una vez creado, puede asignar este rol a cualquier cuenta de cajero.
Aplicación en el servidor
Los permisos se aplican en el lado del servidor, no solo se ocultan en la interfaz. Incluso si alguien intentara evadir la interfaz del cliente o manipular el código del frontend, el servidor valida cada solicitud contra los permisos del rol del cajero antes de ejecutarla.
Esto significa que:
- Un cajero sin MEMBER_DELETE no puede eliminar un miembro, incluso enviando una solicitud directa a la API.
- Un cajero sin REPORT_DISPLAY_FULL no puede recuperar datos de reportes históricos, sin importar cómo acceda al sistema.
- Todas las verificaciones de permisos ocurren en el backend de Rust antes de que se realice cualquier operación de base de datos.
Seguridad: limitación de velocidad
Para proteger contra ataques de fuerza bruta, HandyCafe aplica limitación de velocidad en el inicio de sesión:
- 5 intentos fallidos de inicio de sesión dentro de una ventana de 10 minutos activa un bloqueo automático.
- El bloqueo dura 15 minutos, durante los cuales no se aceptan intentos de inicio de sesión para esa cuenta.
- Después de que expira el período de bloqueo, el cajero puede intentar de nuevo.
Esto aplica tanto a la pantalla de inicio de sesión del servidor como al inicio de sesión del cajero en PCs cliente.
Gestión de turnos
La actividad de cada cajero se registra individualmente durante su turno:
- Todas las transacciones (pagos de sesiones, pagos de pedidos, etc.) se registran con la identidad del cajero.
- La caja registradora hace seguimiento del balance de apertura y cierre para cada turno de cajero por separado.
- Los reportes de turno pueden generarse por cajero, mostrando exactamente cuánto ingreso procesó durante su turno.
- Cuando un cajero cierra sesión, su turno se cierra y un resumen está disponible para revisión.
Este seguimiento por cajero garantiza la rendición de cuentas y facilita la identificación de discrepancias al final de cada turno.
Ejemplos de permisos
Escenario 1: Cajero básico Un nuevo empleado que solo necesita iniciar/detener sesiones y cobrar pagos. Asígnele un rol personalizado con solo CLIENT_LOGIN habilitado. No podrá ver miembros, reportes, registros ni consolas.
Escenario 2: Supervisor de turno Un empleado de confianza que supervisa el local. Asígnele un rol con CLIENT_LOGIN, MEMBER_VIEW, MEMBER_UPDATE, CONSOLE_VIEW, REPORT_PAGE_VIEW y REPORT_DISPLAY_TODAY. Podrá gestionar sesiones, ver (pero no eliminar) miembros, ver consolas y consultar los ingresos del día, pero no podrá acceder a reportes históricos completos ni modificar métodos de pago.
Escenario 3: Gerente nocturno Un gerente que maneja el turno nocturno de forma independiente. Otórguele la mayoría de permisos excepto MEMBER_DELETE, LOG_DELETE y PAYMENT_METHOD_DELETE. Puede gestionar todo durante su turno pero no puede eliminar datos críticos permanentemente.
Escenario 4: Personal con restricción de privacidad Un cajero que no debe ver los datos de contacto de los clientes. Cree un rol con MEMBER_VIEW habilitado pero DISPLAY_EMAIL y DISPLAY_GSM deshabilitados. Podrá buscar miembros por nombre pero la información de contacto personal estará oculta.