chore: auto-commit (43 archivos)
- .mcp.json - bash/functions/infra/write_mcp_jupyter_config.md - bash/functions/infra/write_mcp_jupyter_config.sh - cpp/CMakeLists.txt - cpp/apps/chart_demo - cpp/apps/shaders_lab - cpp/functions/gfx/gl_framebuffer.cpp - cpp/functions/gfx/gl_framebuffer.h - cpp/functions/gfx/gl_framebuffer.md - cpp/functions/gfx/mesh_gpu.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
---
|
||||
name: popelis_set_password
|
||||
kind: function
|
||||
lang: py
|
||||
domain: infra
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "def popelis_set_password(base_url: str, admin_token: str, username: str, password: str, timeout: float = 30.0) -> dict"
|
||||
description: "Cambia la contrasena de un usuario existente en Popelis (POST /api/admin/users/password). Devuelve 404 si el usuario no existe. Registro CERRADO: requiere cabecera X-Admin-Token."
|
||||
tags: [popelis, http, admin, user, password, infra]
|
||||
params:
|
||||
- name: base_url
|
||||
desc: "URL base del servicio sin trailing slash. Ej: https://popelis.datardos.com"
|
||||
- name: admin_token
|
||||
desc: "Token de administracion. Se envia como cabecera X-Admin-Token. No logear ni exponer."
|
||||
- name: username
|
||||
desc: "Nombre del usuario al que se le quiere cambiar la contrasena. Debe existir previamente."
|
||||
- name: password
|
||||
desc: "Nueva contrasena a establecer."
|
||||
- name: timeout
|
||||
desc: "Timeout en segundos para la peticion HTTP. Default 30.0."
|
||||
output: "Dict con el resultado de la operacion: {status: 'password updated'}"
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["json", "urllib.request", "urllib.error"]
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "python/functions/infra/popelis_set_password.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
from infra.popelis_set_password import popelis_set_password
|
||||
|
||||
result = popelis_set_password(
|
||||
base_url="https://popelis.datardos.com",
|
||||
admin_token="<admin-token>",
|
||||
username="alice",
|
||||
password="n3wpass2024",
|
||||
)
|
||||
# result == {"status": "password updated"}
|
||||
print(result)
|
||||
```
|
||||
|
||||
## Cuando usarla
|
||||
|
||||
Cuando necesites resetear o cambiar la contrasena de un usuario ya existente en Popelis desde un script de administracion o agente. Usar DESPUES de `popelis_create_user` (el usuario debe existir). Tambien util para rotacion periodica de credenciales.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- **Token sensible**: `admin_token` es un secreto. Nunca logear el valor, interpolarlo en URLs ni persistirlo en texto plano.
|
||||
- **Registro cerrado**: el endpoint rechaza cualquier peticion sin `X-Admin-Token` valido (HTTP 401/403).
|
||||
- **404 si no existe**: si el `username` no esta registrado, el servidor devuelve HTTP 404 y la funcion lanza `ValueError` con mensaje explicito (`usuario 'X' no existe`). Verificar existencia previa o capturar el error.
|
||||
- **No afecta a Jellyfin**: este endpoint cambia solo la contrasena en Popelis. Si el usuario Jellyfin espejo tiene contrasena separada, habra que gestionarla por separado via la API de Jellyfin.
|
||||
- **Solo stdlib**: no requiere `requests` ni dependencias externas — usa `urllib.request`.
|
||||
Reference in New Issue
Block a user