CreaRack-SL

Endpoint update_company_settings — Configuración de organización

Resumen

Endpoint de actualización de los parámetros de la organización (nombre, settings globales). Parte de la API de settings generales.

Endpoint: PUT /api/settings/company

Módulo: core.api.settings (función update_company_settings)

Requisitos de seguridad (s104)

A partir de la Auditoría Suprema (s104), el endpoint exige rol de administrador (is_admin(request.user)). Previamente aceptaba cualquier usuario autenticado (incluyendo readonly).

Historial:

  • Pre-s104: Sin guard de rol; cualquier usuario podía renombrar su organización.
  • s104 (2026-06-02): Guard añadido: if not is_admin(request.user): raise HttpError(403, "Admin access required").

Flujo

  1. Usuario autenticado en request.user.
  2. Verificar is_admin(user) → 403 si no lo es.
  3. Obtener organización del usuario (request.user.organization).
  4. Validar que existe (404 si no).
  5. Actualizar campos en Organization: name, otros settings.
  6. Response 200 + CompanySettingsSchema con valores actualizados.

Campos permitidos

Schema CompanySettingsSchema define qué campos puede actualizar un admin:

  • name — nombre de la organización.
  • (otros settings generales del tenant).

Tests

  • tests/api/test_settings.py::test_update_company_as_readonly_rejected — 403 para usuario readonly.
  • tests/api/test_settings.py::test_update_company_as_admin_allowed — 200 para admin; cambios persisten.

Véase también

  • [[entity—core—model—organization]]
  • [[entity—core—utils—is-admin]]
  • [[feature—security—s104-auditoria-suprema-fixes-core]]
  • [[concept—saas—multi-tenancy]]
  • [[concept—security—role-based-access-control]]