Actores y roles
Idea principal
En Cutlyy no todas las personas ven el mismo sistema ni pueden hacer las mismas acciones. El acceso depende de:
- quien es la persona
- que membresias tiene
- si la membresia esta activa
- que rol tiene asignado
- en que contexto esta operando: negocio o plataforma
Actores del negocio en lenguaje simple
| Actor | Que hace en la vida real | Como se representa en el sistema |
|---|---|---|
| Cliente o visitante | Reserva, consulta o califica servicios | Usuario publico o usuario interno con rol base de cliente |
| Persona del negocio | Administra el negocio o atiende clientes | Usuario interno con membresia a un negocio |
| Empleado | Presta servicios y ocupa agenda | Membresia activa con isEmployee = true |
| Administrador del negocio | Configura operacion, equipo y catalogo | Membresia activa con rol BUSINESS o CROSS_BUSINESS |
| Administrador transversal | Opera varios negocios con un mismo set de permisos | Membresias de negocio con rol CROSS_BUSINESS |
| Administrador global | Administra capacidades transversales de la plataforma | Membresia global sin businessId y rol GLOBAL |
La pieza clave: la membresia
La membresia (BusinessMembership) es el vinculo operativo entre una persona y un contexto autorizado.
Hoy puede existir de dos formas:
- membresia de negocio: tiene
businessId - membresia global: no tiene
businessId
Sin una membresia activa, una persona puede existir en el sistema, pero no necesariamente puede operar dentro del panel del negocio ni dentro del Panel de control.
La membresia define:
- a que contexto pertenece la persona
- si esta activa o no
- que rol tiene
- si actua como empleado
- a que sede puede quedar asociada en el contexto de negocio
Estados de una membresia
| Estado | Significado operativo |
|---|---|
PENDING | La relacion existe pero aun no esta lista para operar |
ACTIVE | La persona puede actuar segun su rol |
INACTIVE | La relacion existe pero queda suspendida |
DELETED | La relacion fue eliminada logicamente |
Roles y permisos
Un rol no es solo un nombre decorativo. Es la lista de permisos que habilita acciones concretas.
Tipos de rol
| Tipo | Alcance |
|---|---|
BUSINESS | Solo opera dentro de un negocio especifico |
CROSS_BUSINESS | Se administra globalmente, pero se asigna a membresias de negocio |
GLOBAL | Solo opera fuera del negocio, en el Panel de control |
Tipos de permisos y modulos
| Tipo | Uso |
|---|---|
BUSINESS | Solo negocio |
GLOBAL | Solo Panel de control |
HYBRID | Compartido entre negocio y Panel de control |
Esto significa que dos personas del mismo negocio pueden ver experiencias distintas segun su rol, y que el acceso a funciones globales ya no depende de hardcodes sino de permisos reales.
Jerarquia practica
Administrador global
- administra negocios, planes, roles globales, modulos y permisos desde
Panel de control - no representa la operacion diaria de un salon
- usa una membresia global sin
businessId
Administrador transversal
- puede reutilizar un rol comun entre varios negocios
- sigue operando dentro del contexto de cada negocio
- no sustituye la necesidad de una membresia por negocio
Administrador u operador de negocio
- gestiona operacion diaria
- normalmente trabaja con bookings, citas, clientes, servicios o sedes
- su alcance depende del rol configurado
Empleado
- puede aparecer en agenda
- puede tener acceso parcial a sus propias citas
- no todo empleado tiene necesariamente acceso amplio al panel
Cliente
- puede reservar y gestionar su servicio
- puede terminar teniendo un registro interno para historial, reviews o comunicacion
Reglas importantes del modelo
- una membresia global no da acceso automatico a un negocio
- el
Panel de controly el panel de negocio usan permisos distintos - una persona no puede tener mas de una membresia global
- las membresias de negocio siguen dependiendo del negocio correspondiente
- borrar una membresia no borra necesariamente al usuario; la relacion pasa a
DELETED - una membresia eliminada puede conservar trazabilidad y no debe aparecer como acceso operativo normal
Reactivacion especial de administrador
Existe un caso operativo acotado para superadmin global:
- puede consultar negocios donde su propia membresia de negocio este pendiente, inactiva o eliminada
- puede reactivar esa membresia como admin del negocio
- el flujo no convierte una membresia global en membresia de negocio; reutiliza o restaura una relacion existente con ese negocio
Esto sirve para recuperar acceso administrativo sin romper la separacion entre Panel de control y operacion diaria del negocio.
Regla importante sobre empleados
Para que una persona pueda recibir citas como empleado, el sistema exige varias condiciones:
- su membresia debe estar
ACTIVE - debe tener
isEmployee = true - puede requerir una sede asignada
- no debe quedar en estados incompatibles con citas activas
Acceso en frontend y backend
En frontend
La UI usa guards y verificacion de permisos para decidir:
- que pagina puede abrir una persona
- que menu ve
- si puede entrar al negocio o al
Panel de control - si puede ver toda la agenda o solo su propia agenda
En backend
El backend valida el token de sesion, el contexto de negocio cuando aplica y la membresia correcta para cada operacion.
En otras palabras:
- el frontend orienta la experiencia
- el backend protege la regla final
Ejemplos practicos
Caso 1: persona logueada sin membresia activa
Puede tener sesion valida, pero no podra operar la mayoria del panel porque falta el contexto autorizado.
Caso 2: empleado con permisos limitados
Puede ver y administrar solo sus citas si su rol no le permite acceder a toda la agenda.
Caso 3: administrador global sin membresia de negocio
Puede operar el Panel de control, pero no entrar a un negocio puntual si no tiene una membresia de negocio para ese negocio.