Saltar al contenido principal

Definir las funciones de gestión de organizaciones

Antes de diseñar la experiencia de tu organización, enumera los requisitos clave para tu aplicación multi-inquilino. Este capítulo destaca algunos aspectos esenciales a considerar al dar forma a esa experiencia.

Definir el control de acceso dentro de las organizaciones

En este escenario, dentro de un inquilino, los administradores de la organización pueden actualizar los roles de los usuarios, mientras que los miembros regulares no pueden. (Por el contrario, crear una organización es una acción a nivel de sistema que cualquier usuario final puede realizar en una aplicación SaaS multi-inquilino). Para admitir este nivel de control de acceso granular, define permisos y roles de organización para que solo los administradores puedan actualizar roles dentro de una organización.

nota:

Consulta la Plantilla de organización para obtener más información sobre los roles y permisos de la organización.

El rol admin tiene acceso completo a todos los recursos de la organización, mientras que el rol member tiene acceso limitado. Por ejemplo, cada rol puede tener permisos como:

  • Rol admin:
    • read:data - Acceso de lectura a todos los recursos de datos de la organización.
    • write:data - Acceso de escritura a todos los recursos de datos de la organización.
    • delete:data - Acceso de eliminación a todos los recursos de datos de la organización.
    • invite:member - Invitar miembros a la organización.
    • manage:member - Gestionar miembros en la organización.
    • delete:member - Eliminar miembros de la organización.
  • Rol member:
    • read:data - Acceso de lectura a todos los recursos de datos de la organización.
    • write:data - Acceso de escritura a todos los recursos de datos de la organización.
    • invite:member - Invitar miembros a la organización.

Puedes hacer esto fácilmente en la Consola de Logto. Configurar el control de acceso es una parte clave de tu arquitectura de organización (multi-inquilino).

Permitir que los usuarios gestionen sus organizaciones por sí mismos

Tu aplicación también puede necesitar varias funciones de gestión. Para construirlas, utiliza la Management API de Logto. A continuación se muestran funciones comunes y los endpoints de API relacionados. En el próximo capítulo, veremos cómo implementarlas paso a paso.

Permitir que administradores y miembros inviten a otros

Tanto los administradores como los miembros pueden invitar a otros a la organización. Consulta Invitar miembros de la organización para más detalles.

Los administradores pueden modificar los roles de los miembros

Los administradores pueden modificar los roles de otros miembros. También pueden crear roles más específicos para la organización, como jefe de departamento, gestor de proyectos, coordinador, etc. Implementa esto con estas Management APIs:

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/{userId}/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"organizationRoleIds":["admin"]}'

O de forma masiva:

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userIds":["userId1", "userId2"],"organizationRoleIds":["admin"]}'

Añadir bots a la organización

También puedes permitir que los administradores añadan bots a una organización específica. Primero crea aplicaciones máquina a máquina (M2M), luego añade estas aplicaciones M2M a las organizaciones como bots.

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botAppId"]}'

Luego también puedes asignar roles de organización a estos bots.

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botApp1"],"organizationRoleIds":["botRoleId"]}'