Files
THE-TIP-TOP/backend/src/routes/auth.routes.js
Emma781227 65d6b23233 mise a jour
2026-07-08 07:10:49 +02:00

164 lines
4.2 KiB
JavaScript

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;