Ir al contenido principal

Login de usuario - [validate_user_active]

🧾 Descripción

Valida si un usuario:

  1. Existe y su contraseña es correcta

  2. Está habilitado (enabled = 1) en el Doctype User

Es un servicio simple de autenticación básica, expuesto como endpoint público vía frappe.whitelist(allow_guest=True).


🚀 Endpoint


POST /api/method/validate_user_active

Nota: El nombre final depende del módulo donde esté definida la función.
Ejemplo típico Frappe:
/api/method/app.module.doctype.file.validate_user_active


🔐 Seguridad

  • allow_guest=True → cualquiera puede llamarlo sin token

  • Solo valida credenciales usando check_password()

⚠️ Esto implica que el endpoint debe usarse únicamente desde un frontend controlado o un gateway seguro.


📥 Request Body

Formato JSON:


{ "usr": "correo@dominio.com", "pwd": "contraseña" }

📤 Responses

200 – Usuario válido

{ "success": true, "message": "Usuario válido y activo (check_password)." }

401 – Credenciales incorrectas

(Realmente devuelve 200 con success=false, pero semánticamente es un error)

{ "success": false, "message": "Usuario o contraseña incorrectos." }

403 – Usuario deshabilitado

{ "success": false, "message": "El usuario está deshabilitado." }

🧩 Lógica Interna (resumen)

  1. Ejecuta check_password(usr, pwd)

    • Si falla → usuario o contraseña incorrectos

  2. Consulta el campo enabled:


    frappe.db.get_value("User", usr, "enabled")
  3. Devuelve éxito solo si:

    • Contraseña correcta

    • Usuario habilitado


📚 Schemas

Entrada

{ "usr": "string", "pwd": "string" }

Salida

{ "success": "bool", "message": "string" }

🧪 Ejemplo de uso (curl)


curl -X POST https://midominio.com/api/method/app.validate_user_active \ -H "Content-Type: application/json" \ -d '{"usr":"admin@example.com", "pwd":"123"}'