Control de Acceso Basado en Reglas
Roles, Permisos y Usuarios en OmniCRM
OmniCRM utiliza control de acceso basado en roles (RBAC): las personas (Usuarios) son asignadas a uno o más Roles, y cada Rol es un conjunto de Permisos. Los Permisos son la unidad más pequeña de acceso (por ejemplo, view_customer, create_inventory). El acceso efectivo de un usuario es la unión de los permisos de todos los roles asignados.
Propósito
RBAC permite:
- Protección de Datos --- Los usuarios solo ven y hacen lo que se les permite.
- Ajuste Operativo --- Los roles reflejan funciones laborales (Admin, Soporte, Finanzas, Administrador de Clientes).
- Administración Simple --- Conceder acceso asignando roles; evitar la microgestión por usuario.
- Aislamiento de Inquilinos --- Los permisos de "ver propio ..." limitan la visibilidad a los datos de cliente/inquilino propios de un usuario.

Cómo se Integran Usuarios, Roles y Permisos
- Usuarios --- Personas reales que inician sesión en OmniCRM.
- Permisos --- Capacidades atómicas (por ejemplo,
view_customer,delete_product). - Roles --- Conjuntos nombrados de permisos (por ejemplo, Admin, Soporte, Finanzas).
- Asignación --- Los usuarios reciben uno o más roles; los permisos se agregan.

La autenticación prueba quién eres (JWT, clave API o IP en lista blanca). La autorización (roles/permisos) decide qué puedes hacer.
Gestión de Usuarios
El sistema de gestión de usuarios de OmniCRM permite a los administradores crear y gestionar usuarios del personal (administradores, agentes de servicio al cliente), ver y modificar roles de usuario, restablecer contraseñas, gestionar la autenticación de dos factores y controlar el acceso de los usuarios.
Tipos de Usuarios
Usuarios Clientes - Creado a través de auto-registro o por administradores. Asignado automáticamente el rol de "Cliente". Estos usuarios acceden al portal de autoservicio para gestionar sus servicios, ver el uso, pagar facturas, etc.
Usuarios del Personal - Creado por administradores con permisos apropiados. Pueden ser asignados roles como Admin, Soporte, Finanzas, etc. Estos usuarios acceden a la interfaz de CRM para gestionar clientes, provisionar servicios, manejar facturación, etc.
Usuarios Administrativos - Usuarios con el permiso admin. Tienen acceso completo al sistema, incluyendo gestión de usuarios, gestión de roles y todos los puntos finales protegidos.
El usuario administrativo inicial es creado por el equipo de Omnitouch cuando se despliega el sistema.
Agregar Nuevos Usuarios (Administradores y CSAs)
Los administradores pueden crear nuevos usuarios del personal a través de la interfaz web o API.
A través de la Interfaz Web
- Navegar a Usuarios y Roles - Acceder a la interfaz de gestión de usuarios desde el menú de administración.
- Hacer clic en "Agregar Usuario" - Abre el formulario de creación de usuario.

- Completar los Detalles del Usuario:
- Nombre de Usuario - Nombre de usuario único para iniciar sesión (requerido).
- Correo Electrónico - Dirección de correo electrónico del usuario (requerido, debe ser único).
- Contraseña - Contraseña temporal (requerido, el usuario debe cambiarla en el primer inicio de sesión).
- Nombre - Primer nombre del usuario (requerido).
- Segundo Nombre - Segundo nombre del usuario (opcional).
- Apellido - Apellido del usuario (requerido).
- Número de Teléfono - Número de teléfono de contacto (opcional).
- Rol - Seleccionar uno o más roles para asignar (requerido).
- Contacto del Cliente - Opcionalmente vincular al usuario a un registro de contacto del cliente (para usuarios clientes).
- Hacer clic en "Crear Usuario" - El usuario es creado y puede iniciar sesión inmediatamente con las credenciales proporcionadas.
- El usuario recibe notificación - Opcionalmente enviar un correo electrónico de bienvenida con instrucciones de inicio de sesión.
Mejores Prácticas:
- Usar una contraseña temporal como
TempP@ssw0rd!y requerir que el usuario la cambie en el primer inicio de sesión. - Asignar roles apropiados según la función laboral (ver Diseños de Roles Típicos a continuación).
- Habilitar 2FA para todo el personal administrativo y de soporte.
- Vincular usuarios clientes a su registro de contacto del cliente para un correcto alcance de datos.
A través de la API
Crear un usuario programáticamente:
Endpoint: POST /auth/users
Permiso Requerido: admin
Cuerpo de la Solicitud:
{
"username": "john.smith",
"email": "john.smith@company.com",
"password": "TempP@ssw0rd!",
"first_name": "John",
"middle_name": "D",
"last_name": "Smith",
"phone_number": "+61412345678",
"role": "Support"
}
Respuesta:
{
"id": 123,
"username": "john.smith",
"email": "john.smith@company.com",
"first_name": "John",
"last_name": "Smith",
"roles": ["Support"],
"created": "2025-01-04T10:30:00Z"
}
Asignando Múltiples Roles:
Los usuarios pueden tener múltiples roles. Los permisos son aditivos (unión de todos los permisos de roles asignados).
Para asignar múltiples roles, inclúyelos en la solicitud:
{
"username": "jane.doe",
"email": "jane.doe@company.com",
"password": "TempP@ssw0rd!",
"first_name": "Jane",
"last_name": "Doe",
"role": "Support,Finance"
}
O usa el endpoint de asignación de roles después de la creación del usuario:
POST /auth/roles/{role_id}/users/{user_id}
Ver y Buscar Usuarios
Listar Todos los Usuarios (Admin):
GET /auth/users
Devuelve una lista paginada de todos los usuarios con sus roles e información básica.
Buscar Usuarios:
GET /auth/users/search?search={query}&filters={"role":["Support"]}&page=1&per_page=50
Filtrar por:
- Nombre del rol
- Dominio de correo electrónico
- Estado activo/eliminado
- Estado de habilitación de 2FA
- Fecha del último inicio de sesión
Obtener Usuario Específico:
GET /auth/users/{user_id}
Devuelve detalles completos del usuario, incluyendo:
- Información personal
- Roles asignados y permisos efectivos
- Estado de 2FA
- Último inicio de sesión e información de sesión
- Contacto del cliente vinculado (si aplica)
Crear y Gestionar Roles
Los roles son colecciones de permisos que pueden ser asignados a los usuarios. En lugar de asignar permisos individualmente a cada usuario, creas roles que agrupan permisos relacionados y asignas esos roles a los usuarios.
Crear un Nuevo Rol
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → pestaña Roles.
- Hacer clic en "Crear Rol".
- Ingresar detalles del rol:
- Nombre - Nombre corto y descriptivo (por ejemplo, "Tier2_Support").
- Descripción - Explicar el propósito y responsabilidades del rol.
- Hacer clic en "Crear".
- El rol es creado sin permisos; agregar permisos en el siguiente paso.
A través de la API:
Endpoint: POST /auth/roles
Permiso Requerido: admin
Solicitud:
{
"name": "Tier2_Support",
"description": "Equipo de soporte de nivel 2 con acceso elevado a aprovisionamiento"
}
Respuesta:
{
"id": 45,
"name": "Tier2_Support",
"description": "Equipo de soporte de nivel 2 con acceso elevado a aprovisionamiento",
"permissions": [],
"users": []
}
Agregar Permisos a un Rol
Una vez que se crea un rol, asigna permisos para definir lo que los usuarios con ese rol pueden hacer.
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → pestaña Roles.
- Hacer clic en el nombre del rol para ver detalles.
- En la sección Permisos, hacer clic en "Agregar Permiso".
- Seleccionar uno o más permisos de la lista.
- Hacer clic en "Agregar" - Los permisos se asignan inmediatamente.


A través de la API:
Endpoint: POST /auth/roles/{role_id}/permissions
Solicitud:
{
"permission_id": 123
}
O agregar múltiples permisos:
{
"permission_ids": [123, 124, 125]
}
Ejemplo: Creando un Rol de "Especialista en Aprovisionamiento"
Este rol puede ver clientes, gestionar servicios y aprovisionar:
-
Crear el rol:
POST /auth/roles
{
"name": "Provisioning_Specialist",
"description": "Puede aprovisionar servicios y gestionar servicios de clientes"
} -
Agregar permisos:
POST /auth/roles/45/permissions
{
"permission_ids": [
1, # view_customer
20, # view_customer_service
21, # create_customer_service
22, # update_customer_service
30, # view_provision
31, # create_provision
40, # view_inventory
50, # view_product
]
}
Eliminar Permisos de un Rol
A través de la Interfaz Web:
- Navegar a los detalles del rol.
- En la lista de Permisos, hacer clic en el botón "X" o "Eliminar" junto al permiso.
- Confirmar la eliminación.
A través de la API:
Endpoint: DELETE /auth/roles/{role_id}/permissions/{permission_id}
Ejemplo:
DELETE /auth/roles/45/permissions/31
Esto elimina el permiso create_provision del rol.
Editar Detalles del Rol
Actualizar el nombre o la descripción del rol:
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → pestaña Roles.
- Hacer clic en el rol para editar.
- Modificar el nombre o la descripción del rol.
- Hacer clic en "Guardar".

A través de la API:
Endpoint: PUT /auth/roles/{role_id}
{
"name": "Senior_Support",
"description": "Equipo de soporte senior con acceso completo a clientes"
}
Eliminar un Rol
Advertencia: Eliminar un rol lo quita de todos los usuarios asignados. Asegúrate de que los usuarios tengan roles alternativos o perderán el acceso.
A través de la API:
DELETE /auth/roles/{role_id}
Mejor Práctica: En lugar de eliminar, considera archivar o renombrar roles que ya no son necesarios.
Asignar Roles a Usuarios
Durante la Creación de Usuarios:
Incluir el rol en la solicitud de creación de usuario (ver "Agregar Nuevos Usuarios" arriba).
Para Usuarios Existentes:
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → pestaña Usuarios.
- Hacer clic en el usuario para editar.
- En la sección Roles, seleccionar/deseleccionar roles.
- Hacer clic en "Guardar".

A través de la API:
Actualizar los roles del usuario:
Endpoint: PUT /auth/users/{user_id}
{
"role": "Support,Finance"
}
O asignar un solo rol a un usuario a través del endpoint de rol:
Endpoint: POST /auth/roles/{role_id}/users/{user_id}
Ver Asignaciones de Roles
Todos los usuarios en un rol:
GET /auth/roles/{role_id}/users
Devuelve una lista de todos los usuarios asignados a ese rol.
Todos los roles para un usuario:
GET /auth/users/{user_id}
La respuesta incluye un array roles con todos los roles asignados.
Gestión de Contraseñas de Usuario
OmniCRM proporciona múltiples métodos para la gestión de contraseñas dependiendo del contexto.
Restablecimiento de Contraseña por Autogestión del Usuario
Los usuarios que olvidaron su contraseña pueden restablecerla ellos mismos a través de la página de inicio de sesión:
- Hacer clic en "Olvidé mi Contraseña" en la página de inicio de sesión.
- Ingresar dirección de correo electrónico - El sistema envía un correo electrónico de restablecimiento de contraseña.
- Revisar correo electrónico - El correo contiene un enlace seguro de restablecimiento con token (válido por 1 hora).
- Hacer clic en el enlace - Abre el formulario de restablecimiento de contraseña.
- Ingresar nueva contraseña - Debe cumplir con los requisitos de complejidad de la contraseña:
- Mínimo 8 caracteres.
- Al menos una letra mayúscula.
- Al menos una letra minúscula.
- Al menos un número.
- Al menos un carácter especial.
- Enviar - La contraseña se actualiza inmediatamente; el usuario puede iniciar sesión con la nueva contraseña.
Flujo de API:
-
Solicitar restablecimiento:
Endpoint:
POST /auth/forgot_password{
"email": "user@example.com"
}El sistema genera un token de restablecimiento y envía un correo electrónico.
-
Restablecer con token:
Endpoint:
POST /auth/reset_password{
"token": "abc123...",
"new_password": "NewSecureP@ssw0rd!"
}
Restablecimiento de Contraseña por Administrador
Los administradores pueden restablecer la contraseña de un usuario sin requerir verificación por correo electrónico. Esto establece una contraseña temporal que el usuario debe cambiar en el siguiente inicio de sesión.
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → Usuarios.
- Encontrar al usuario y hacer clic en el botón "Restablecer Contraseña".
- Ingresar una contraseña temporal.
- Hacer clic en "Restablecer".
- Notificar al usuario sobre su contraseña temporal (a través de un canal seguro).
- El usuario debe cambiar la contraseña en el siguiente inicio de sesión.
A través de la API:
Endpoint: POST /auth/users/{user_id}/admin_reset_password
Permiso Requerido: admin
Solicitud:
{
"new_password": "TempP@ssw0rd!",
"force_change": true
}
Parámetros:
new_password- Contraseña temporal a establecer.force_change(opcional) - Si es verdadero, el usuario debe cambiar la contraseña en el siguiente inicio de sesión.
Cambio de Contraseña por el Usuario
Los usuarios autenticados pueden cambiar su propia contraseña desde su perfil:
Endpoint: POST /auth/change_password
Solicitud:
{
"current_password": "OldP@ssw0rd!",
"new_password": "NewSecureP@ssw0rd!"
}
El sistema valida la contraseña actual antes de permitir el cambio.
Seguridad de Contraseña
- Las contraseñas se almacenan utilizando bcrypt (seguridad de werkzeug).
- Nunca se almacenan en texto plano.
- Los tokens de restablecimiento expiran después de 1 hora.
- Los intentos fallidos de inicio de sesión pueden activar el bloqueo de la cuenta (configurable).
- El seguimiento del historial de contraseñas previene la reutilización (configurable).
- Se aplican requisitos de complejidad.
Gestión de la Autenticación de Dos Factores (2FA)
OmniCRM admite la autenticación de dos factores basada en TOTP para mayor seguridad. Los administradores pueden habilitar, deshabilitar y restablecer 2FA para los usuarios.

Habilitar 2FA para un Usuario
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → Usuarios.
- Hacer clic en el usuario para ver detalles.
- En la sección Seguridad, hacer clic en "Habilitar 2FA".
- El sistema genera:
- Secreto TOTP (se muestra el código QR).
- 10 códigos de respaldo (uso único).
- El usuario escanea el código QR con la aplicación de autenticación (Google Authenticator, Authy, etc.).
- El usuario ingresa el código de verificación de la aplicación para confirmar la configuración.
- El usuario guarda los códigos de respaldo en un lugar seguro.
- 2FA ahora está habilitado; se requiere para todos los futuros inicios de sesión.

A través de la API:
-
Generar secreto TOTP:
Endpoint:
POST /2fa/enable/user/{user_id}Respuesta:
{
"totp_secret": "JBSWY3DPEHPK3PXP",
"qr_code_url": "otpauth://totp/OmniCRM:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=OmniCRM",
"backup_codes": [
"12345678",
"23456789",
"34567890",
...
]
} -
Verificar configuración:
Endpoint:
POST /2fa/verify-setup/user/{user_id}{
"code": "123456"
}Devuelve
{"verified": true}en caso de éxito.
Flujo de Inicio de Sesión 2FA
Una vez que 2FA está habilitado, el proceso de inicio de sesión cambia:
- El usuario ingresa nombre de usuario y contraseña.
- El sistema valida las credenciales.
- Si son válidas, solicita el código 2FA.
- El usuario ingresa el código de la aplicación de autenticación O el código de respaldo.
- El sistema verifica el código.
- En caso de éxito, el usuario inicia sesión.

Códigos de Respaldo:
- 10 códigos generados durante la configuración de 2FA.
- Solo de un solo uso (consumidos después de su uso).
- Utilizados si la aplicación de autenticación no está disponible.
- Pueden ser regenerados por el usuario o el administrador.
Verificando el Código 2FA
Endpoint: POST /2fa/verify/user/{user_id}
{
"code": "123456"
}
Acepta ambos:
- Código TOTP (6 dígitos de la aplicación de autenticación).
- Código de respaldo (8 dígitos de la lista de códigos de respaldo).
Regenerando Códigos de Respaldo
Si un usuario agota los códigos de respaldo o los pierde, genera nuevos:
A través de la Interfaz Web:
- Navegar a los detalles del usuario.
- Hacer clic en "Regenerar Códigos de Respaldo".
- Mostrar o enviar nuevos códigos al usuario.
- Los códigos antiguos se invalidan.
A través de la API:
Endpoint: POST /2fa/backup-codes/regenerate/user/{user_id}
Respuesta:
{
"backup_codes": [
"98765432",
"87654321",
"76543210",
...
]
}
Restablecimiento de 2FA por Administrador
Si un usuario pierde el acceso a su aplicación de autenticación y todos los códigos de respaldo, un administrador puede deshabilitar y volver a habilitar 2FA.
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → Usuarios.
- Hacer clic en el usuario.
- Hacer clic en el botón "Restablecer 2FA".
- Confirmar el restablecimiento.
- 2FA está deshabilitado; el usuario puede iniciar sesión solo con la contraseña.
- Guiar al usuario para que configure 2FA nuevamente con el nuevo secreto.
A través de la API:
Endpoint: POST /2fa/admin/disable/user/{user_id}
Permiso Requerido: admin
Esto deshabilita completamente 2FA para el usuario:
- Se borra el secreto TOTP.
- Se borran los códigos de respaldo.
- Se establece la bandera
is_2fa_enableden falso.
El usuario puede volver a habilitar 2FA para obtener un nuevo secreto y códigos de respaldo.
Restablecimiento de 2FA por el Usuario (Nuevo Dispositivo)
Si un usuario obtiene un nuevo dispositivo pero aún tiene acceso a los códigos de respaldo:
Endpoint: POST /2fa/reset-for-new-device/user/{user_id}
{
"backup_code": "12345678"
}
El sistema valida el código de respaldo, luego genera un nuevo secreto TOTP y códigos de respaldo. El usuario puede configurar la aplicación de autenticación en el nuevo dispositivo.
Mejores Prácticas de 2FA
- Requerir 2FA para todo el personal administrativo y de soporte.
- Almacenar los códigos de respaldo de forma segura (gestor de contraseñas o nota segura).
- Regenerar códigos de respaldo después de usar varios.
- Usar aplicaciones de autenticación de buena reputación (Google Authenticator, Authy, Microsoft Authenticator).
- Documentar los procedimientos de restablecimiento de 2FA para el personal de soporte.
- Auditar el uso de 2FA - monitorear qué usuarios tienen 2FA habilitado.
Actualizando la Información del Usuario
Los administradores pueden actualizar los detalles del usuario en cualquier momento.
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → Usuarios.
- Hacer clic en el usuario para editar.
- Modificar cualquier campo editable:
- Nombre, segundo nombre, apellido.
- Dirección de correo electrónico (requiere verificación).
- Número de teléfono.
- Roles.
- Vinculación de contacto del cliente.
- Hacer clic en "Guardar".
A través de la API:
Endpoint: PUT /auth/users/{user_id}
{
"first_name": "Jane",
"last_name": "Doe-Smith",
"email": "jane.doesmith@newcompany.com",
"phone_number": "+61498765432",
"role": "Support,Finance"
}
Cambios de Correo Electrónico:
Cuando se cambia el correo electrónico, el nuevo correo se marca como pendiente hasta que se verifique:
- El campo
pending_emailalmacena el nuevo correo. - Se envía un correo electrónico de verificación a la nueva dirección.
- El usuario hace clic en el enlace para verificar.
- El campo
emailse actualiza al nuevo valor. - La bandera
email_verifiedse establece en verdadero.
Eliminando Usuarios
OmniCRM utiliza eliminaciones suaves para los usuarios: se marcan como eliminados pero no se eliminan de la base de datos. Esto preserva las auditorías y los datos históricos.
Eliminar un Usuario
A través de la Interfaz Web:
- Navegar a Usuarios y Roles → Usuarios.
- Encontrar al usuario a eliminar.
- Hacer clic en el botón "Eliminar".
- Confirmar la eliminación.
- El usuario es inmediatamente desconectado y no puede iniciar sesión nuevamente.
A través de la API:
Endpoint: DELETE /auth/users/{user_id}
Permiso Requerido: admin
Qué Ocurre:
- La bandera
deletedse establece enTrue. - Se registra la marca de tiempo
deleted_at. - El usuario no puede iniciar sesión.
- Todas las sesiones activas se invalidan.
- El usuario aún aparece en los registros de auditoría y registros históricos.
- Los datos vinculados (contactos de clientes, actividades) se preservan.
Ver Usuarios Eliminados
Filtrar por usuarios eliminados:
GET /auth/users/search?filters={"deleted":[true]}
Restaurar un Usuario Eliminado
Si un usuario fue eliminado por error, los administradores pueden restaurarlo:
Endpoint: PUT /auth/users/{user_id}
{
"deleted": false
}
Esto borra la bandera deleted y permite que el usuario inicie sesión nuevamente.
Nota: La contraseña del usuario permanece sin cambios, por lo que puede usar su contraseña anterior.
Eliminación Permanente de un Usuario
Advertencia: Esto es irreversible y elimina todos los datos del usuario de la base de datos.
No se expone a través de la interfaz de usuario. Solo está disponible a través de acceso directo a la base de datos por razones de cumplimiento (por ejemplo, solicitudes de eliminación de datos GDPR).
Mejores Prácticas para la Eliminación de Usuarios
- Eliminar suavemente por defecto - Preserva las auditorías.
- Documentar razones de eliminación - Agregar nota en el registro de actividad antes de eliminar.
- Transferir propiedad - Reasignar los tickets abiertos y tareas del usuario antes de eliminar.
- Revisar acceso - Asegurarse de que no haya procesos críticos que dependan del usuario.
- Archivar datos - Exportar el historial de trabajo del usuario si es necesario.
- Notificar a los equipos relevantes - Informar a gerentes/compañeros sobre la eliminación.
Catálogo de Permisos
Los permisos generalmente siguen patrones CRUD:
view\_\*--- leer/navegar.create\_\*--- crear/agregar.update\_\*--- editar/modificar.delete\_\*--- eliminar/remover.
Algunas entidades también incluyen variantes "ver propio ..." que restringen la visibilidad a los datos del cliente/inquilino propio del usuario.

Global / Administrativo
admin--- Acceso administrativo completo (gestionar usuarios, roles y permisos; acceder a todos los puntos finales protegidos).can_impersonate--- Actuar temporalmente como otro usuario (auditado; para soporte/troubleshooting).
Clientes y Registros Relacionados
- Cliente
view_customer,create_customer,update_customer,delete_customer- Alcance propio: ver propio cliente
- Sitio del Cliente
view_customer_site,create_customer_site,update_customer_site,delete_customer_site- Alcance propio: ver propio sitio del cliente
- Contacto del Cliente
view_customer_contact,create_customer_contact,update_customer_contact,delete_customer_contact- Alcance propio: ver propio contacto del cliente
- Atributo del Cliente (ver Atributos del Cliente)
view_customer_attribute,create_customer_attribute,update_customer_attribute,delete_customer_attribute- Alcance propio: ver propio atributo del cliente
- Etiqueta del Cliente (ver Etiquetas del Cliente)
view_customer_tag,create_customer_tag,update_customer_tag,delete_customer_tag- Alcance propio: ver propia etiqueta del cliente
- Servicio del Cliente
view_customer_service,create_customer_service,update_customer_service,delete_customer_service- Alcance propio: ver propio servicio del cliente
- Actividad del Cliente
view_customer_activity,create_customer_activity,update_customer_activity,delete_customer_activity- Alcance propio: ver propia actividad del cliente
Facturación
- Tarjeta de Stripe
view_customer_stripe_card,create_customer_stripe_card,update_customer_stripe_card,delete_customer_stripe_card- Alcance propio: ver propia tarjeta de stripe del cliente
- Transacciones
view_customer_transaction,create_customer_transaction,update_customer_transaction,delete_customer_transaction- Alcance propio: ver propia transacción del cliente
- Facturas
view_customer_invoice,create_customer_invoice,update_customer_invoice,delete_customer_invoice- Alcance propio: ver propia factura del cliente
Comunicaciones
view_communication,create_communication,update_communication,delete_communication- Alcance propio: ver propia comunicación
Inventario y Plantillas
- Inventario
view_inventory,create_inventory,update_inventory,delete_inventory- Alcance propio: ver propio inventario
- Plantilla de Inventario
view_inventory_template,create_inventory_template,update_inventory_template,delete_inventory_template- Alcance propio: ver propia plantilla de inventario
Productos
view_product,create_product,update_product,delete_product
Difusión Celular (CBC)
view_cbc_message,create_cbc_message,update_cbc_message,delete_cbc_message
Aprovisionamiento
- Aprovisionar
view_provision,create_provision,update_provision,delete_provision- Alcance propio: ver propio aprovisionamiento
- Evento de Aprovisionamiento
view_provision_event,create_provision_event,update_provision_event,delete_provision_event
Acceso "Ver Propio"
Los permisos "ver propio ..." limitan las lecturas (y opcionalmente las ediciones, donde se implementen) a los datos asociados con el propio cliente/inquilino del usuario. Por ejemplo, un rol de Administrador de Clientes puede gestionar los contactos, sitios, facturas y servicios de su inquilino, pero no puede ver otros inquilinos.
Diseños de Rol Típicos
Rol Permisos Típicos Notas
Administrador del Sistema admin, opcionalmente can_impersonate; además de CRUD amplio según sea necesario Control total sobre usuarios/roles/permisos
Soporte view_customer, view_customer_service, view_communication, view_provision; actualizaciones opcionales Agregar can_impersonate si está permitido
Finanzas view_customer_invoice, view_customer_transaction, view_product; opcional create_customer_invoice Enfocado en lectura; escritura limitada
Administrador de Clientes (inquilino) "ver propio ..." en clientes, sitios, contactos, servicios, inventario, facturas, transacciones, comunicaciones, aprovisionamiento Gestión con alcance de inquilino
Auditor Solo Lectura Amplio view_* solamente Sin crear/actualizar/eliminar
: Ejemplo de Roles y Permisos Incluidos (resumen)
Gestión de Roles y Permisos a través de la API
Todos los endpoints requieren permiso admin.
Listar permisos
Endpoint: GET /auth/permissions
Crear un permiso (raro)
Endpoint: POST /auth/permissions
Cuerpo de la Solicitud:
{
"name": "view_example",
"description": "Acceso solo de lectura a objetos de ejemplo"
}
Listar roles
Endpoint: GET /auth/roles
Crear un rol
Endpoint: POST /auth/roles
Cuerpo de la Solicitud:
{
"name": "Support",
"description": "Equipo de soporte de nivel 1"
}
Agregar un permiso a un rol
Endpoint: POST /auth/roles/{role_id}/permissions
Cuerpo de la Solicitud:
{
"permission_id": 123
}
Eliminar un permiso de un rol
Endpoint: DELETE /auth/roles/{role_id}/permissions/{permission_id}
Asignando Roles a Usuarios
Crear un usuario con rol
Endpoint: POST /auth/users
Cuerpo de la Solicitud:
{
"username": "sara",
"email": "sara@example.com",
"password": "TempP@ssw0rd!",
"first_name": "Sara",
"last_name": "Ng",
"phone_number": "+61...",
"role": "Support"
}
Actualizar el rol de un usuario
Endpoint: PUT /auth/users/{user_id}
Cuerpo de la Solicitud:
{
"role": "Finance"
}
Listar usuarios (solo Admin)
Endpoint: GET /auth/users
Suplantación (Controlada)
- Requerido:
can_impersonateoadmin
Iniciar suplantación
Endpoint: POST /auth/impersonate
Cuerpo de la Solicitud:
{ "user_id": 42 }
Detener suplantación
Endpoint: POST /auth/stop_impersonation
Mejores Prácticas
- Menor privilegio primero. Comenzar con roles mínimos; agregar permisos según sea necesario.
- Preferir "ver propio ...". Usar permisos con alcance de inquilino para roles orientados al cliente.
- Mantener roles estables. Actualizar permisos de rol cuando cambien las características---no editar cada usuario.
- Auditar regularmente. Revisar quién tiene
adminocan_impersonate.
Preguntas Frecuentes
¿Puede un usuario tener múltiples roles? Sí. Los permisos son aditivos.
¿Necesito permisos personalizados? Generalmente no. El catálogo incorporado cubre la mayoría de las necesidades.
¿Cómo saben las reglas "ver propio ..." qué es mío? Evalúan la vinculación entre tu usuario/contacto y tu cliente (inquilino).