El módulo Identity es el proveedor de identidad propio del ecosistema ArccNova (ADR-003). Autentica usuarios, emite y renueva sesiones, administra el catálogo de usuarios de cada empresa y resuelve el control de acceso de todo el sistema: roles personalizados, matriz de permisos por submódulo, permisos individuales, permisos protegidos por contraseña de acción y auditoría de uso permanente.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/DevCarlosRodriguez/Documentacion-Arccnova-2.0/llms.txt
Use this file to discover all available pages before exploring further.
Alcance
- Ya implementado
- Por construir (extensión RBAC — ADR-015)
- Fuera de alcance
- Login con correo y contraseña
- Refresh token
- Registro público de empresa con Stripe Checkout
- Recuperación y cambio de contraseña
- Impersonación de usuario (SysAdmin)
- Gestión de planes de precios (SysAdmin)
- JWT HS256 con claims:
sub,name,email,tenant_id,branch_id,role,imp
Modelo de dominio
Entidades ya implementadas
| Entidad | Contenido |
|---|---|
| Usuario | Nombre completo, correo (único), contraseña hasheada, rol, empresa, proyecto activo |
| Sesión | Access token JWT + refresh token |
Extensión RBAC (por construir)
| Entidad | Contenido | Referencia |
|---|---|---|
| Rol | Personalizado por empresa; nombre y descripción; el rol CEO es protegido (no editable ni eliminable) | Decisión 12; C36 |
| Permiso (catálogo) | Matriz submódulo × acción: Ver, Escribir, Actualizar, Eliminar, Descargar | Imagen C48 |
| Rol-Permiso | Qué permisos otorga cada rol | Decisión 12 |
| Permiso individual | Permisos por usuario por encima de su rol | Decisión 12 |
| Membresía usuario-proyecto | A qué proyectos pertenece el usuario y con qué rol en cada uno | C12 |
| Permiso protegido | Los 18 permisos de acciones sensibles (lista cerrada, RN-07) | C33 |
| Contraseña de acción | Generada por el sistema, por usuario, para ejercer sus permisos protegidos | C34 |
| Auditoría de uso | Registro permanente de cada uso de permiso | C35 |
Matriz de permisos de referencia
| Grupo | Submódulos incluidos | Acciones disponibles |
|---|---|---|
| Seguridad | Roles, Usuarios, Permisos, Permisos de usuario, Promociones | Ver, Escribir, Actualizar, Eliminar, Descargar |
| G. Comercial | Contactos, Ventas, Créditos, Cotizaciones, Cobros, Reservas | Ver, Escribir, Actualizar, Eliminar, Descargar |
| Logística | Manzanas, Lotes | Ver, Escribir, Actualizar, Eliminar, Descargar |
| Tesorería | Conceptos, Gastos de proyecto, Gastos generales, Recibos, Panorama financiero | Ver, Escribir, Actualizar, Eliminar, Descargar |
| Ajustes | Tipos de pago, Métodos de pago, Monedas, Días festivos, Proyectos, Sedes, Contratos, Tipos de recibos | Ver, Escribir, Actualizar, Eliminar, Descargar |
| Reportes | Reportes de ventas, financieros, de lotes, de contactos | Solo Ver (ver implica descargar, C48) |
Flujos
Flujo 4.1 — Login
Validación de credenciales
Verificación del estado de suscripción
403 billing-owner-required y se le redirige a una pantalla de “sin acceso” con el mensaje genérico “contacta al administrador del proyecto”. El sistema no notifica al CEO (C07).Estructura del JWT
Flujo 4.2 — Registro de empresa
Captura de datos del CEO
Creación de cuenta
Confirmación de correo electrónico
RequireConfirmedEmail).Stripe Checkout
Flujo 4.3 — Recuperación y cambio de contraseña
Flujo estándar de token por correo. La nueva contraseña debe cumplir la política RN-01 (mínimo 8 caracteres con al menos una mayúscula, una minúscula y un carácter especial).Flujo 4.4 — Asignar rol y permisos (por construir)
Crear roles
Asignar usuarios a proyectos
Flujo 4.5 — Otorgar permisos protegidos (por construir)
Seleccionar permisos protegidos
Generación de contraseña de acción
Desactivación opcional por empresa
Flujo 4.6 — Impersonación (implementado)
El SysAdmin asume la sesión de cualquier usuario. El JWT emitido lleva el claimimp: true para identificar la sesión impersonada en los registros de auditoría.
Reglas de negocio
RN-01 — Política de contraseñas
RN-01 — Política de contraseñas
RN-02 — Enlace de confirmación de correo
RN-02 — Enlace de confirmación de correo
RN-03 — Persistencia de cuenta sin pago
RN-03 — Persistencia de cuenta sin pago
RN-04 — Bloqueo de usuario no-CEO con suscripción vencida
RN-04 — Bloqueo de usuario no-CEO con suscripción vencida
RN-05 — Rol CEO protegido
RN-05 — Rol CEO protegido
RN-06 — Roles y permisos por proyecto
RN-06 — Roles y permisos por proyecto
RN-07 — Los 18 permisos protegidos (lista cerrada)
RN-07 — Los 18 permisos protegidos (lista cerrada)
| # | Permiso protegido |
|---|---|
| 1 | EDITAR CONCEPTO DE MORA |
| 2 | ELIMINAR CONCEPTO POR MORA |
| 3 | CARGAR COBROS |
| 4 | ACTUALIZAR VENTAS |
| 5 | ACTUALIZAR CONTRATOS |
| 6 | VER COBROS |
| 7 | ELIMINAR USUARIOS |
| 8 | ACTUALIZAR USUARIOS |
| 9 | VER CONTRATOS |
| 10 | CARGAR VENTAS |
| 11 | CARGAR USUARIOS |
| 12 | ELIMINAR CONTRATOS |
| 13 | ELIMINAR VENTAS |
| 14 | VER USUARIOS |
| 15 | CARGAR CONTRATOS |
| 16 | ACTUALIZAR COBROS |
| 17 | ELIMINAR COBROS |
| 18 | VER VENTAS |
RN-08 — Contraseña de acción
RN-08 — Contraseña de acción
RN-09 — Permisos protegidos configurables por empresa
RN-09 — Permisos protegidos configurables por empresa
RN-10 — Auditoría de uso
RN-10 — Auditoría de uso
RN-11 — Permisos en módulo Reportes
RN-11 — Permisos en módulo Reportes
Puntos abiertos
- Flag 1 (C05): Mecanismo del token de confirmación de correo — ¿se mantiene el token de Data Protection de ASP.NET Identity o se cambia a token propio? (Contrasta con ADR-003.)
- Flag 6 (C34): Contraseña de acción estática generada vs re-autenticación + permiso RBAC. La semántica de negocio (RN-07 a RN-09) no cambia independientemente de la decisión técnica.
- La nomenclatura final de los roles seed (CEO / Admin / Asesor de negocio vs SysAdmin / Admin / Agent / Auditor actualmente implementados) se resuelve al construir la matriz RBAC.