const express = require("express"); const { register, login, verifyEmail, verifyCode, forgotPassword, resetPassword, me, changePassword, deleteAccount } = require("../controllers/auth.controller"); const authMiddleware = require("../middlewares/auth.middleware"); const validate = require("../middlewares/validate.middleware"); const { registerSchema, loginSchema } = require("../validations/auth.validation"); const router = express.Router(); /** * @swagger * /api/auth/register: * post: * summary: Inscription d'un utilisateur * tags: * - Auth * requestBody: * required: true * content: * application/json: * schema: * type: object * properties: * firstname: * type: string * lastname: * type: string * email: * type: string * password: * type: string * responses: * 201: * description: Utilisateur créé */ router.post("/register", validate(registerSchema), register); /** * @swagger * /api/auth/login: * post: * summary: Connexion utilisateur * tags: * - Auth * requestBody: * required: true * responses: * 200: * description: Connexion réussie */ router.post("/login", validate(loginSchema), login); /** * @swagger * /api/auth/me: * get: * summary: Informations de l'utilisateur connecté * tags: * - Auth * security: * - bearerAuth: [] * responses: * 200: * description: Profil utilisateur */ router.get("/me", authMiddleware, me); /** * @swagger * /api/auth/verify-email/{token}: * get: * summary: Vérification de l'adresse email * tags: * - Auth * parameters: * - in: path * name: token * required: true * schema: * type: string * description: Token de validation envoyé par email * responses: * 200: * description: Email vérifié avec succès. * 400: * description: Lien de validation invalide ou expiré. * 500: * description: Erreur serveur. */ router.get("/verify-email/:token",verifyEmail); /** * @swagger * /api/auth/forgot-password: * post: * summary: Demande de réinitialisation du mot de passe * tags: * - Auth * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - email * properties: * email: * type: string * format: email * example: jean.dupont@gmail.com * responses: * 200: * description: Si un compte existe avec cet email, un lien de réinitialisation a été envoyé. * 400: * description: Email requis. * 500: * description: Erreur serveur. */ router.post("/forgot-password", forgotPassword); /** * @swagger * /api/auth/reset-password/{token}: * post: * summary: Réinitialisation du mot de passe * tags: * - Auth * parameters: * - in: path * name: token * required: true * schema: * type: string * description: Token de réinitialisation reçu par email * requestBody: * required: true * content: * application/json: * schema: * type: object * required: * - password * properties: * password: * type: string * format: password * example: NouveauPassword123 * responses: * 200: * description: Mot de passe réinitialisé avec succès. * 400: * description: Lien invalide, expiré ou mot de passe invalide. * 500: * description: Erreur serveur. */ router.post("/reset-password/:token", resetPassword); router.post("/verify-code", verifyCode); router.patch("/change-password", authMiddleware, changePassword); router.delete("/account", authMiddleware, deleteAccount); module.exports = router;