/login
POST
/login
/api/login
)username
y password
. Verifica existencia, estado activo (status: true
), correo confirmado (confirmEmail: true
) y validez de la contraseña. Si es exitoso, genera y devuelve un token JWT.validateSellerLogin
(valida campos username
y password
)validateRequest
(manejo de errores de validación){
"username": "string (requerido)",
"password": "string (requerido)"
}
{
"status": "success",
"code": "LOGIN_SUCCESS",
"msg": "Inicio de sesión exitoso para '{username}'.",
"data": {
"seller": {
"_id": "ObjectId",
"username": "string",
"email": "string",
"names": "string",
"lastNames": "string",
"role": "string",
"SalesCity": "string"
},
"token": "string (JWT)"
}
}
{
"status": "error",
"code": "MISSING_FIELD", // o "VALIDATION_ERROR"
"msg": "Los campos 'username' y 'password' son obligatorios."
// "errors": [...] // si viene de validateRequest
}
{
"status": "error",
"code": "INVALID_CREDENTIALS",
"msg": "Contraseña incorrecta."
}
{
"status": "error",
"code": "EMAIL_NOT_CONFIRMED",
"msg": "Debes confirmar tu correo electrónico antes de iniciar sesión."
}
{
"status": "error",
"code": "ACCOUNT_DISABLED",
"msg": "La cuenta del vendedor '{username}' está desactivada."
}
{
"status": "error",
"code": "NOT_FOUND",
"msg": "Usuario '{username}' no encontrado."
}
{
"status": "error",
"code": "SERVER_ERROR",
"msg": "Ha ocurrido un error inesperado al iniciar sesión. Intente de nuevo más tarde.",
"info": {
"detail": "Mensaje específico del error interno (ej: 'Database query failed')"
}
}
curl --location --request POST 'https://back-prima-s-a.onrender.com/api/login' \
--header 'User-Agent: insomnia/10.3.0' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "SellerUser",
"password": "123456"
}'
{}