Initialisation du backend de Thé Tip Top
This commit is contained in:
114
src/routes/admin.routes.js
Normal file
114
src/routes/admin.routes.js
Normal file
@@ -0,0 +1,114 @@
|
||||
const express = require("express");
|
||||
const {
|
||||
getStats,
|
||||
getUsers,
|
||||
getEmailingContacts,
|
||||
createEmployee,
|
||||
drawWinner,
|
||||
getGrandPrizeWinner,
|
||||
} = require("../controllers/admin.controller");
|
||||
|
||||
const authMiddleware = require("../middlewares/auth.middleware");
|
||||
const roleMiddleware = require("../middlewares/role.middleware");
|
||||
const validate = require("../middlewares/validate.middleware");
|
||||
const { createEmployeeSchema } = require("../validations/admin.validation");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use(authMiddleware);
|
||||
router.use(roleMiddleware("ADMIN"));
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/stats:
|
||||
* get:
|
||||
* summary: Tableau de bord administrateur
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Statistiques du jeu concours
|
||||
*/
|
||||
|
||||
router.get("/stats", getStats);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/users:
|
||||
* get:
|
||||
* summary: Liste des clients inscrits
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Liste des utilisateurs clients
|
||||
*/
|
||||
router.get("/users", getUsers);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/emailing:
|
||||
* get:
|
||||
* summary: Liste des contacts ayant accepté l'emailing
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Contacts marketing opt-in
|
||||
*/
|
||||
router.get("/emailing", getEmailingContacts);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/employees:
|
||||
* post:
|
||||
* summary: Création d'un employé
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 201:
|
||||
* description: Employé créé
|
||||
*/
|
||||
router.post("/employees", validate(createEmployeeSchema), createEmployee);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/draw:
|
||||
* post:
|
||||
* summary: Tirage au sort du grand gagnant
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Gagnant tiré au sort
|
||||
*/
|
||||
router.post("/draw", drawWinner);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/admin/draw:
|
||||
* get:
|
||||
* summary: Consulter le gagnant du gros lot
|
||||
* tags:
|
||||
* - Admin
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Gagnant du gros lot
|
||||
* 404:
|
||||
* description: Aucun gagnant encore tiré
|
||||
*/
|
||||
router.get("/draw", getGrandPrizeWinner);
|
||||
|
||||
module.exports = router;
|
||||
69
src/routes/auth.routes.js
Normal file
69
src/routes/auth.routes.js
Normal file
@@ -0,0 +1,69 @@
|
||||
const express = require("express");
|
||||
const { register, login, me } = 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);
|
||||
|
||||
|
||||
module.exports = router;
|
||||
76
src/routes/employee.routes.js
Normal file
76
src/routes/employee.routes.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const express = require("express");
|
||||
const {
|
||||
getGainByTicketCode,
|
||||
deliverClaim,
|
||||
} = require("../controllers/employee.controller");
|
||||
|
||||
const authMiddleware = require("../middlewares/auth.middleware");
|
||||
const roleMiddleware = require("../middlewares/role.middleware");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/employee/ticket/{code}:
|
||||
* get:
|
||||
* summary: Rechercher le gain associé à un ticket
|
||||
* tags:
|
||||
* - Employee
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: code
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: Code du ticket à 10 caractères
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Gain trouvé
|
||||
* 400:
|
||||
* description: Ticket non encore utilisé par un client
|
||||
* 404:
|
||||
* description: Ticket introuvable
|
||||
*/
|
||||
router.get(
|
||||
"/ticket/:code",
|
||||
authMiddleware,
|
||||
roleMiddleware("EMPLOYEE", "ADMIN"),
|
||||
getGainByTicketCode
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/employee/claim/{id}/deliver:
|
||||
* patch:
|
||||
* summary: Marquer un lot comme remis en boutique
|
||||
* tags:
|
||||
* - Employee
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: ID de la réclamation
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Lot remis avec succès
|
||||
* 400:
|
||||
* description: Gain expiré ou non valide
|
||||
* 404:
|
||||
* description: Réclamation introuvable
|
||||
* 409:
|
||||
* description: Lot déjà remis
|
||||
*/
|
||||
router.patch(
|
||||
"/claim/:id/deliver",
|
||||
authMiddleware,
|
||||
roleMiddleware("EMPLOYEE", "ADMIN"),
|
||||
deliverClaim
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
41
src/routes/game.routes.js
Normal file
41
src/routes/game.routes.js
Normal file
@@ -0,0 +1,41 @@
|
||||
const express = require("express");
|
||||
const { participate, myGains } = require("../controllers/game.controller");
|
||||
const authMiddleware = require("../middlewares/auth.middleware");
|
||||
const validate = require("../middlewares/validate.middleware");
|
||||
const { participateSchema } = require("../validations/game.validation");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/game/participate:
|
||||
* post:
|
||||
* summary: Participer au jeu concours
|
||||
* tags:
|
||||
* - Game
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 201:
|
||||
* description: Participation enregistrée
|
||||
*/
|
||||
|
||||
router.post("/participate", authMiddleware, validate(participateSchema), participate);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/game/my-gains:
|
||||
* get:
|
||||
* summary: Historique des gains du participant
|
||||
* tags:
|
||||
* - Game
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Liste des gains
|
||||
*/
|
||||
|
||||
router.get("/my-gains", authMiddleware, myGains);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user