Organizaciones y roles
Cada pieza de datos en ARGUS está acotada a una organización (org). Usuarios, operaciones, equipos, activos, docks DJI, sedes, webhooks, workflows, branding — todo vive bajo exactamente una organización. Si tu cuenta pertenece a varias organizaciones, cambias entre ellas; nunca ves datos cruzados entre organizaciones.
La organización es la unidad
- El inicio de sesión es global (una cuenta Firebase), pero todo lo que ves después de iniciar sesión está filtrado por una organización activa almacenada en
OrgService.activeOrgId$(persistida enlocalStoragecomosar.activeOrg). - Las reglas de seguridad de Firestore imponen el acotamiento en el servidor: un administrador de la Org A no puede leer ni escribir datos en la Org B, incluso con una petición falsificada — las reglas comprueban tu documento de membresía en
orgs/{orgId}/members/{uid}. - Equipos, operaciones y activos llevan todos
orgIdy se consultan con ese filtro.
Jerarquía de roles
ARGUS define cinco roles de organización integrados, ordenados por privilegios decrecientes (src/app/core/data/model/org.ts):
| Rol | Etiqueta | Color | Resumen |
|---|---|---|---|
superadmin | Super Admin | rojo | Control total a nivel de tenant: crear organizaciones, gestionar plan, gestionar roles personalizados, suplantar. |
admin | Admin | ámbar | Gestionar usuarios, activos, docks, sedes, workflows, webhooks y branding de esta organización. |
manager | Manager | cian | Gestionar usuarios (invitar, asignar roles), crear/editar operaciones, liderar equipos. |
operator | Operator | verde | Crear y ejecutar operaciones, volar drones asignados, transmitir por PTT, redactar informes. |
observer | Observer | gris | Solo lectura en las operaciones a las que se haya añadido al usuario. |
La taxonomía conceptual de comandante / operador / analista / admin / invitado se mapea sobre esta lista:
- Comandante / líder de equipo →
manager(oadminsi también se encarga de la configuración). - Operador de dron →
operator. Analista / observador →observeruoperator. - Administrador →
adminosuperadmin. - Invitado de misión → no es un rol — una invitación a una sola operación.
Roles personalizados
En Command y Sovereign, el superadmin crea roles personalizados en /admin/roles. Los roles personalizados fijan permisos específicos y se emparejan por customRoleId en el orgRoleGuard junto con los integrados. El preset venue_creator habilita /admin/venues para usuarios que no son admin.
Los roles son aditivos entre organizaciones, no dentro de una
Tu documento de membresía en una organización dada tiene un role. No puedes ser admin y observer a la vez en la Org A. Pero sí puedes ser admin en la Org A y observer en la Org B — cada membresía se almacena por separado, y cambiar la organización activa cambia qué rol aplica.
roleAtLeast(role, minimum) (de org.ts) devuelve si un rol cumple o supera un mínimo — se usa en toda la app para comprobaciones de permisos.
Cambiar de organización
Desde cualquier página, haz clic en tu avatar en la barra superior. La cabecera del desplegable muestra el nombre de la organización activa y tu insignia de rol en esa organización. Debajo, Cambiar organización te permite elegir otra membresía. El cambio actualiza activeOrgId$, recarga los permisos de navegación y el dashboard se re-renderiza con las operaciones de esa organización.
Crear una organización
Solo superadmin. Ve a /admin/org → Nueva organización y rellena Nombre, slug, Plan (guardian / tactical / command / sovereign — límites impuestos en servidor: máximo de usuarios, streams, retención, SSO, copiloto de IA) y Admin principal (primer miembro, auto-promovido a admin).
La creación self-service para no-superadmins es aspiracional; los clientes se registran en el sitio de marketing, que provisiona en servidor.
Ajustes por organización
Una vez que eres admin (o superior) de una organización, estas superficies son tuyas para configurar:
- Branding (
/admin/org) — nombre de la organización, logo, color de acento, subdominio personalizado. - Sedes (
/admin/venues) — mapas interiores, áreas geocercadas, plataformas de aterrizaje de drones. - Activos (
/admin/assets) — aeronaves, vehículos, perros, personas, cámaras, FOBs. - Flota DJI (
/admin/dji) — docks emparejados en la nube y sus aeronaves. - Workflows (
/admin/workflows) — plantillas de misión repetibles y automatizaciones. - Webhooks (
/admin/webhooks) — callbacks HTTP para eventos de misión, detecciones y HMS. - Usuarios + invitaciones (
/admin/users) — membresía, roles, invitaciones, restablecimientos de contraseña. - Suscripción (
/admin/subscription, solo superadmin) — plan + facturación.