Autenticación
Este módulo maneja la autenticación de usuarios en el sistema AgroMarket.
Endpoints
POST /api/v1/auth/login
Inicia sesión de un usuario con nombre de usuario y contraseña.
URL: /api/v1/auth/login
Método: POST
Headers:
Content-Type: application/json
Body:
{
"username": "usuario123",
"password": "contraseña123"
}
Respuesta exitosa (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "1h",
"message": "ok"
}
Respuesta de error (403):
{
"message": "User not found"
}
Respuesta de error (500):
{
"message": "Error interno del servidor"
}
POST /api/v1/auth/register
Registra un nuevo usuario en el sistema.
URL: /api/v1/auth/register
Método: POST
Headers:
Content-Type: application/json
Body:
{
"username": "nuevo_usuario",
"email": "usuario@ejemplo.com",
"address": "Calle Principal 123",
"phone": "1234567890",
"password": "contraseña123",
"lat": 19.4326,
"lng": -99.1332
}
Respuesta exitosa (201):
{
"message": "Usuario creado"
}
Respuesta de error (400):
{
"message": "User already exists"
}
Respuesta de error (403):
{
"message": "Username already in use"
}
GET /api/v1/auth/refresh
Renueva el token JWT usando el refresh token almacenado en cookies.
URL: /api/v1/auth/refresh
Método: GET
Headers:
Cookie: refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Respuesta exitosa (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "1h"
}
Respuesta de error (401):
{
"message": "JWT expirado"
}
GET /api/v1/auth/logout
Cierra la sesión del usuario eliminando el refresh token de las cookies.
URL: /api/v1/auth/logout
Método: GET
Respuesta exitosa (200):
{
"message": "Logout"
}
Respuesta de error (500):
{
"message": "Error de server"
}
Códigos de Error Comunes
Código | Descripción |
---|---|
400 | Usuario ya existe |
401 | Token inválido o expirado |
403 | Credenciales inválidas o datos duplicados |
500 | Error interno del servidor |
Notas Importantes
- Todos los tokens JWT tienen una duración de 1 hora
- El refresh token se almacena en cookies HTTP-only
- Las contraseñas se encriptan antes de almacenarse
- Los emails se normalizan automáticamente
- Las ubicaciones (lat/lng) son opcionales pero recomendadas