HandyCafe Docs
owner

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

  1. Navegue a Gestión > Cajeros en la aplicación del servidor.
  2. Haga clic en el botón Agregar cajero.
  3. Ingrese el nombre de usuario del cajero. Este es el que usará para iniciar sesión.
  4. Establezca una contraseña. Elija una contraseña segura. Esta cuenta puede tener acceso a datos financieros e información de clientes.
  5. Seleccione un rol del menú desplegable. Puede elegir Administrador, Predeterminado o cualquier rol personalizado que haya creado.
  6. 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

  1. Navegue a Gestión > Roles de cajero en la aplicación del servidor.
  2. Haga clic en el botón Agregar rol.
  3. Ingrese un nombre de rol (por ejemplo, "Supervisor de turno", "Cajero junior", "Personal nocturno").
  4. Establezca el nivel del rol. Los niveles más altos indican mayor autoridad. Se usa para ordenamiento de visualización y jerarquía organizacional.
  5. Active o desactive los permisos individuales en las seis categorías. Cada casilla corresponde a una de las 22 configuraciones de permisos.
  6. 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.