/login-admin
POST /api/login-admin
{
"username": "nombre_de_usuario_admin",
"password": "la_contraseña_del_admin"
}
username
y password
estén presentes y cumplan los formatos definidos.admins
model) por username
.status === true
.status === false
), responde con 403 Forbidden.bcrypt.compare
(método matchPassword
) para comparar las contraseñas.chances
.chances
llega a 0, se bloquea la cuenta (status = false
).lastLogin
con la fecha y hora actual.chances
a 3._id
y role = "admin"
.{
"status": "success",
"code": "LOGIN_SUCCESS",
"msg": "Inicio de sesión exitoso para 'admin_user'.",
"data": {
"admin": {
"_id": "...",
"username": "admin_user",
"role": "admin",
"createdAt": "...",
"lastLogin": "..."
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
{
"status": "error",
"code": "MISSING_FIELD", // o código de validación específico
"msg": "Los campos 'username' y 'password' son obligatorios."
}
{
"status": "error",
"code": "INVALID_CREDENTIALS",
"msg": "Contraseña errónea. Le quedan X intentos."
// o "Contraseña errónea. La cuenta ha sido bloqueada."
}
{
"status": "error",
"code": "ACCOUNT_LOCKED",
"msg": "La cuenta del administrador 'admin_user' está bloqueada."
}
{
"status": "error",
"code": "NOT_FOUND",
"msg": "No se encontró administrador con username 'admin_user'."
}
{
"status": "error",
"code": "SERVER_ERROR",
"msg": "Ha ocurrido un error inesperado al intentar iniciar sesión. Intente de nuevo más tarde."
}
curl --location --request POST 'https://back-prima-s-a.onrender.com/api/login-admin' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "UserAdmin",
"password": "PassAdmin"
}'
{
"msg": "Inicio de sesion exitoso",
"inf": {
"_id": "67624f907669c906ca34a8de",
"username": "UserAdmin",
"role": "admin",
"createdAt": "2024-12-17T12:00:00.000Z"
},
"tokenJWT": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3NjI0ZjkwNzY2OWM5MDZjYTM0YThkZSIsInJvbCI6ImFkbWluIiwiaWF0IjoxNzQyODQzNzUwLCJleHAiOjE3NDI4NzI1NTB9.4AWcgFdvlxB1qr2WC8yk1c3ki0I3vK8JqJZZrVYaVYs"
}