System

apps/system/docs/routes-and-permissions

Rutas, sesión y permisos

Grupos de rutas

Auth

app/(auth) contiene login, registro, verificación de email, recuperación de contraseña, onboarding e invitaciones. El route group no aparece en la URL.

Dashboard

app/(dashboard) contiene home, usuarios, estates, works, infractions, access y settings. Su layout monta la navegación y ejecuta useInitAuth.

Redirecciones

modules/shared/utils/redirect.utils.ts centraliza el flujo:

  1. Mientras se carga el usuario no redirige.
  2. Usuarios no autenticados van a login salvo rutas públicas o de invitación.
  3. El super admin debe verificar email y completar onboarding.
  4. Usuarios invitados deben completar el flujo de invitación si todavía no tienen contexto.
  5. Usuarios activos que acceden a rutas públicas o de registro son enviados al home.

Las constantes de rutas y redirects provienen de @repo/constants. No hardcodear rutas en páginas o hooks si ya existe una constante.

Permisos

modules/shared/utils/permission.utils.ts convierte los roles en permisos usando ROLE_PERMISSIONS de @repo/constants. routePermission filtra los items de navegación visibles.

La visibilidad de navegación es una ayuda de UX, no una frontera de seguridad. La autorización real debe existir también en Firestore Rules o en la callable function correspondiente.

Contexto seleccionado

El store de auth conserva communityId y role seleccionados en localStorage. El contexto se considera listo cuando existen usuario, comunidad/roles, rol activo y permisos. Los cambios de contexto deben actualizar el store mediante sus acciones y no escribiendo estado aislado en los componentes.