Saltar al contenido principal

Compartir-entre-espacios.-14

Ver en Git



title: Compartir entre espacios

Share Between Espacios API

Descripción: Esta API permite gestionar y controlar los permisos de acceso y compartición entre diferentes espacios dentro de Auravant. Los administradores de espacio pueden compartir y gestionar los permisos de otros espacios asociados, así como ver los espacios asociados a su propio entorno. Además, se permite la validación de posibles destinatarios para la compartición de recursos.

Funcionalidades

  1. Post - Agregar Espacio Permitido

Permite agregar un espacio a la lista de espacios asociados, asignándole permisos específicos.

  1. Delete - Eliminar Espacio Permitido(soft delete)

Permite eliminar un espacio de la lista de espacios asociados y revocar los permisos.

  1. Get - Validar Posibles Receptores

Permite validar si un email pertenece a un usuario que es parte de un espacio asociado.

  1. Get - Espacios Asociados

Permite obtener los espacios que están asociados al espacio actual, ya sea porque comparten recursos con él o porque él comparte con ellos.

Estructura del Código

Endpoints

  • /api/share_btw_spaces/possible_receptor Método: GET Parámetro: email Respuesta: Lista de espacios asociados al email proporcionado.

  • /api/share_btw_spaces/workspaces_permitted Método: POST Parámetros:

    • space (string): El espacio que se quiere compartir, formado por el subdominio y el tenant. Por ejemplo: aura2.auravant.com (subdominio + tenant).
    • share_permissions (array): Un array de permisos asociados al espacio.

    Respuesta: Confirmación de que el espacio ha sido agregado correctamente a la lista de espacios permitidos.

  • /api/share_btw_spaces/workspaces_permitted Método: DELETE Parámetros:

    • id_workspace (integer): El ID del espacio que se quiere eliminar de la lista de espacios permitidos.

    Respuesta: Confirmación de que el espacio y los permisos asociados han sido eliminados correctamente.

  • /api/share_btw_spaces/associated_workspaces Método: GET Parámetro:

    • shared_with_me (boolean): Si se especifica como true, se devolverán los espacios que han compartido recursos contigo; de lo contrario, se devolverán los espacios que tú compartes.

    Respuesta: Lista de espacios asociados.

Validaciones

  • Validación de Espacio: Se valida que el espacio proporcionado sea un subdominio y tenant válido, y que exista en la base de datos.

  • Validación de Email: Se valida que el email proporcionado sea correcto y pertenezca a un usuario registrado en el sistema.

Base de Datos

El sistema interactúa con varias tablas en la base de datos para gestionar los permisos de los espacios y las asociaciones entre ellos:

  • compartir_entre_espacios: Relaciona los espacios que se comparten entre sí.
  • escritorios: Información sobre los espacios.
  • usuarios: Información de los usuarios registrados.
  • lotes_compartidos y estancias_compartidas: Gestión de permisos asociados a recursos compartidos en los espacios.

Esquemas de Datos

El esquema para las peticiones POST y las validaciones incluye:

{
"type": "object",
"properties": {
"space": {"type": "string"},
"share_permissions": {
"type": "array",
"items": {"type": "integer", "enum": [2, 3, 4, 5]},
"minItems": 1
}
},
"required": ["space", "share_permissions"],
"additionalProperties": False
}

Seguridad y Límite de Peticiones

Se ha implementado un sistema de limitación de peticiones mediante el uso de Rate Limiting, para proteger la API contra abusos:

  • 1 por segundo
  • 10 por minuto
  • 100 por hora

Uso

Para interactuar con la API, realiza las siguientes peticiones HTTP usando herramientas como Postman o cURL.

Ejemplo de POST

Agregar un espacio permitido:

POST /api/share_btw_spaces/workspaces_permitted
Content-Type: application/json
{
"space": "subdominio.tenant.com",
"share_permissions": [2, 3]
}

Ejemplo de DELETE

Eliminar un espacio de la lista de espacios permitidos:

DELETE /api/share_btw_spaces/workspaces_permitted?id_workspace=123

Ejemplo de GET

Consultar posibles receptores para compartir:

GET /api/share_btw_spaces/possible_receptor?email=user@example.com

Modificación en la API de Sharing

Se ha realizado una modificación en la API de sharing para aceptar el parámetro receptor_workspace_id en el cuerpo de la solicitud. Cuando se incluye este parámetro, la API buscará específicamente al usuario dentro del espacio indicado. Si el parámetro no está presente, la API continuará funcionando como lo hacía hasta ahora, buscando posibles receptores de manera general.


Hecho con amor por Gerito