cURL
curl --request POST \ --url https://api.example.com/api/v1/auth/login \ --header 'Content-Type: application/json' \ --data ' { "username": "<string>", "password": "<string>" } '
{ "status": "<string>", "message": "<string>", "user": { "user.id": "<string>", "user.username": "<string>", "user.email": "<string>", "user.active": true, "user.role_id": 123, "user.role_name": "<string>" } }
Authenticate a user and return user information
curl -X POST https://api.example.com/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "username": "john_doe", "password": "securePassword123" }'
{ "status": "success", "message": "Login exitoso", "user": { "id": "550e8400-e29b-41d4-a716-446655440000", "username": "john_doe", "email": "[email protected]", "active": true, "role_id": 2, "role_name": "manager" } }
{ "status": "error", "message": "Body requerido." }
{ "status": "error", "message": "Username y password son requeridos." }
{ "status": "error", "message": "Credenciales inválidas" }
{ "status": "error", "message": "Error interno del servidor" }
backend/Auth/Adapters/auth_controller.py:14-46
@router.route('/login', methods=['POST']) def login(): """Endpoint para iniciar sesión.""" try: data = request.get_json() if not data: return jsonify({"status": "error", "message": "Body requerido."}), 400 username = data.get('username') password = data.get('password') if not username or not password: return jsonify({"status": "error", "message": "Username y password son requeridos."}), 400 db = next(get_db()) service = _get_service(db) user = service.login(username, password) return jsonify({ "status": "success", "message": "Login exitoso", "user": user.to_dict() }), 200 except ValueError as ve: return jsonify({"status": "error", "message": str(ve)}), 401 except Exception as e: logger.error("Error inesperado en login: %s", e) return jsonify({"status": "error", "message": "Error interno del servidor"}), 500