Skip to content

AxelPerrin/TP-API-B3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TP-API-B3

API REST pour DealExpress — projet d'exercice (Auth, Deals, Votes, Comments, Modération)

Installation

  1. Installer les dépendances
cd c:\Users\zlata\Documents\GitHub\TP-API-B3
npm install
  1. Copier .env.example en .env et renseigner MONGO_URL et JWT_SECRET.

  2. Lancer en développement

npm run dev

Endpoints principaux

Auth

  • POST /api/auth/register — inscription (body: username,email,password)
  • POST /api/auth/login — login (body: email,password)
  • GET /api/auth/me — profil (Authorization: Bearer )

Deals

  • GET /api/deals — liste publique (only approved) (query: page,limit)
  • GET /api/deals/search?q=term — recherche title/description
  • GET /api/deals/:id — détails (author, comments, votes counts)
  • POST /api/deals — créer (auth required) body: title,description,price,category,...
  • PUT /api/deals/:id — modifier (owner only, only if pending)
  • DELETE /api/deals/:id — supprimer (owner or admin)

Votes

  • POST /api/deals/:id/vote — voter (body: { "type": "hot" } or { "type": "cold" })
  • DELETE /api/deals/:id/vote — retirer son vote

Comments

  • GET /api/deals/:dealId/comments — lister
  • POST /api/deals/:dealId/comments — ajouter (auth required)
  • PUT /api/comments/:id — modifier (owner only)
  • DELETE /api/comments/:id — supprimer (owner or admin)

Admin / Modération

  • GET /api/admin/deals/pending — lister pending (moderator/admin)
  • PATCH /api/admin/deals/:id/moderate — approuver/rejeter (moderator/admin) body: { "status": "approved" }
  • GET /api/admin/users — liste des utilisateurs (admin)
  • PATCH /api/admin/users/:id/role — changer rôle (admin) body: { "role": "moderator" }

Validation et sécurité

  • Mots de passe hashés avec bcryptjs.
  • JWT pour l'authentification, le token contient id et role.
  • express-validator pour valider les entrées.
  • Rôles: user, moderator, admin.

Account

  • Role admin : email :axel@gmail.com | mot de passe : axelito78 | username : axel
  • Role moderator : email : jean@gmail.com | mot de passe : jeandu78 | username : jean
  • Role user : email : paul@gmail.com | mot de passe : pauldu78 | username : paul

Base de données

  • Mongoose (MongoDB). Le modèle Vote contient un index unique (userId,dealId) pour empêcher les doublons.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors