Roles y permisos
La plataforma distingue dos ámbitos: el de plataforma (admin global) y el de academia (usuarios de cada academia).
Admin de plataforma
Solo existe un tipo de usuario para el admin (academy-manager-admin):
| Rol | Descripción | Permisos |
|---|---|---|
| Administrador de plataforma | Gestiona la oferta multi-academia. | Login en el admin, listar/crear/editar academias, listar/crear/editar planes. Configura por academia: activo/inactivo, días y % de mora, plan asignado, precios por disciplina. |
- Autenticación: Cookie
platform_auth(JWT). No está ligado a ninguna academia. - Usuario de prueba: platform@academy.com / platform123 (creado en el seed del backend).
Roles dentro de cada academia
En la web de academias (academy-manager-web), la app móvil (academy-manager-app) y la API (JWT con academy_id):
| Rol | Descripción | Permisos principales |
|---|---|---|
| admin | Administrador de la academia. | Dashboard, estudiantes, pagos, reportes, becas, correos, eventos (edición), exámenes, feed. |
| coordinador | Coordinador operativo. | Dashboard, estudiantes, pagos, reportes, correos, eventos (aprobaciones), feed. Sin becas. |
| director | Dirección de academia. | Como admin en operación; edición de eventos sin modo edición; validación pagos. |
| manager | Gestión / caja. | Operación, reportes, aprobaciones eventos y pagos, feed. |
| profesor | Instructor. | Estudiantes, eventos y exámenes (staff), feed /inicio. |
| estudiante | Alumno inscrito. | Feed /inicio, mi ficha, pagos, eventos (portal), exámenes propios, público. |
Portal dual (staff + ficha de estudiante)
Si un usuario staff tiene registro Student en la misma academia (tiene_ficha_estudiante: true), puede además:
- Preinscribirse a torneos desde el feed
- Ver mis pagos, medallas y exámenes como alumno
Detalle API: middleware requireEstudianteOStaffConFichaPropia — ver academy-manager-api/docs/PERMISSIONS.md.
Módulos opcionales (plan + academia)
| Módulo | Cuándo visible |
|---|---|
| Eventos | Plan con events y academia eventsEnabled |
| Exámenes | Plan con exams y academia examsEnabled |
| Correos masivos | Plan bulkEmail y academia bulkEmailEnabled |
GET /api/academy/modules — cualquier usuario autenticado de la academia.
Resumen por ruta (web de academia)
| Ruta / recurso | admin | coord | director | manager | profesor | estudiante |
|---|---|---|---|---|---|---|
/dashboard | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
/inicio (feed) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Estudiantes | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Eventos (gestión staff) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Eventos (portal / preinscripción) | ✅* | ✅* | ✅* | ✅* | ✅* | ✅ |
/mi-ficha, /pagos | ✅* | ✅* | ✅* | ✅* | ✅* | ✅ |
| Exámenes (staff) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Exámenes (mis resultados) | ✅* | ✅* | ✅* | ✅* | ✅* | ✅ |
| Reportes (mora) | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Becas | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
| Correos | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Público | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pre-registro / inscripción token | Público | Público | Público | Público | Público | Público |
* Solo si tiene_ficha_estudiante (portal dual).
Post-login (web)
- estudiante →
/inicio - staff →
/dashboard(feed disponible en menú Inicio)
API: cómo se aplican los roles
- El JWT incluye
academy_idyrol. Todas las consultas se filtran poracademy_id. requireRoles(...)para rutas staff.requireEstudianteOStaffConFichaPropia()para portal estudiante yGET /events/feed.- Constantes de eventos:
EVENT_STAFF_ROLES,EVENT_EDITOR_ROLES, etc. — verPERMISSIONS.md.