Editions Machettes souhaite développer une API sécurisée pour gérer une bibliothèque de livres avec des utilisateurs ayant différents rôles (admin et utilisateur standard).
- Création d'un projet Node.js.
- Installation des packages nécessaires:
express
,winston
,mongoose
,jsonwebtoken
.
- Configuration de Winston pour enregistrer les informations, les warnings et les erreurs.
- Les logs doivent être consignés dans un fichier
logs.txt
.
- Modèle
User
avec les champsusername
,password
etrole
(admin ou user). - Modèle
Book
avec les champstitle
,author
,pages
,genre
,published
(boolean) etuserId
(référence à User). - Les mots de passe des utilisateurs doivent être hashés.
- Mise en place d'un middleware JWT pour sécuriser les routes.
- Les routes
POST /books
etDELETE /books/:id
doivent être accessibles uniquement par les administrateurs. - Les routes
GET /books
etGET /books/:id
doivent être accessibles par tous les utilisateurs authentifiés.
POST /users/register
pour enregistrer un nouvel utilisateur.POST /users/login
pour connecter un utilisateur et renvoyer un JWT.POST /books
pour ajouter un nouveau livre (admin seulement).GET /books
pour récupérer tous les livres (utilisateurs authentifiés).GET /books/:id
pour récupérer un livre spécifique (utilisateurs authentifiés).DELETE /books/:id
pour supprimer un livre (admin seulement).
- Mise en œuvre d'une gestion d'erreur robuste et cohérente sur tous les endpoints.
- Les erreurs doivent être loggées avec Winston.
- Les réponses d'erreur doivent être claires et structurées.
- Tests complets de tous les endpoints avec des outils appropriés.
- Vérification de la sécurité JWT et de la gestion d'erreur.
- Code source documenté et commenté.
- Documentation d'utilisation et un README de déploiement de l'API.
- Réaliser un front-end simple pour exploiter l'API : technos et outils libre
Ce projet permettra aux Editions Machettes de gérer efficacement leur bibliothèque de livres avec une API sécurisée et robuste, facilitant ainsi les opérations quotidiennes et la gestion des utilisateurs et des livres.