Authentification
Connexion
POST /auth/login
{
login: string; // email ou nom d'utilisateur
password: string;
type?: "admin" | "client" | "support";
}
Réponse (data) :
{
token: string;
role: string;
}
Le champ type n'est envoyé que par un des trois points d'appel du frontend (auth-service.ts) ; les deux autres (user.service.ts, user.actions.ts) appellent le même endpoint sans ce champ. Le type TypeScript AuthResponse ne déclare que { token, role }, mais le code qui traite la réponse de connexion lit aussi data.user — l'API renvoie donc vraisemblablement un objet utilisateur en plus, simplement non répercuté dans le typage frontend. Ne vous fiez pas uniquement aux types TypeScript ici : vérifiez la réponse réelle de l'API.
Le token est stocké côté serveur dans un cookie dont le nom dépend de type : client_token, admin_token ou support_token (des variantes admin_proprio_token / admin_support_token sont également prévues dans le code de nettoyage des cookies, sans point d'appel identifié qui les écrit). Un cookie current_token_type indique quel token est actif pour la session en cours.
Rafraîchissement du token
POST /auth/refresh
Authorization: Bearer <token actuel>
Aucun corps de requête — le rafraîchissement s'authentifie uniquement via le token actuel dans l'en-tête Authorization.
Réponse :
{
success: boolean;
message: string;
data: {
newToken: string;
role: string;
};
}
Le frontend planifie un rafraîchissement proactif dès que le JWT est décodé et que son expiration (exp, seule information exploitée du payload) approche à moins de 2 minutes, avec une logique de retry limitée pour éviter les boucles en cas d'échec.
Autres endpoints
| Endpoint | Usage |
|---|---|
POST /auth/register | Inscription voyageur |
POST /auth/register-owner | Inscription propriétaire |
POST /auth/verify-email | Vérification d'email |
POST /auth/google, POST /auth/facebook | Connexion sociale |
GET /auth/check-account | Vérifie l'existence d'un compte |
POST /auth/set-initial-password | Définit le mot de passe initial (compte activé par un tiers) |
POST /user/logout | Déconnexion |
/password_reset/* | Flux de réinitialisation (vérification email, code, nouveau mot de passe) |
Il n'existe pas de récepteur de webhook dans le frontend Next.js — voir Webhooks pour le détail de cette limite.