(Projet 6 - Formation en Web Développement - Openclassrooms)
Piiquante se dédie à la création de sauces épicées dont les recettes sont gardées secrètes. Pour tirer parti de son succès et générer davantage de buzz, l'entreprise souhaite créer une application web dans laquelle les utilisateurs peuvent ajouter leurs sauces préférées et liker ou disliker les sauces ajoutées par les autres. Le front-end de l'application a été développé à l'aide d'Angular et a été précompilé après des tests internes, mais Piiquante a besoin d'un développeur back-end pour construire l'API.
Le délai est raisonnable, vous décidez donc d'accepter le projet.
Toutes les routes sauce pour les sauces doivent disposer d’une autorisation (le token est envoyé par le front-end avec l'en-tête d’autorisation : « Bearer »). Avant que l'utilisateur puisse apporter des modifications à la route sauce, le code doit vérifier si l'userId actuel correspond à l'userId de la sauce. Si l'userId ne correspond pas, renvoyer « 403: unauthorized request. » Cela permet de s'assurer que seul le propriétaire de la sauce peut apporter des modifications à celle-ci.
● Le mot de passe de l'utilisateur doit être haché.
● L'authentification doit être renforcée sur toutes les routes sauce requises.
● Les adresses électroniques dans la base de données sont uniques et un plugin Mongoose approprié est utilisé pour garantir leur unicité et signaler les erreurs.
● La sécurité de la base de données MongoDB (à partir d'un service tel que MongoDB Atlas) ne doit pas empêcher l'application de se lancer sur la machine d'un utilisateur.
● Un plugin Mongoose doit assurer la remontée des erreurs issues de la base de données.
● Les versions les plus récentes des logiciels sont utilisées avec des correctifs de sécurité actualisés.
● Le contenu du dossier images ne doit pas être téléchargé sur GitHub.
-
Stocker des données de manière sécurisée
-
Implémenter un modèle logique de données conformément à la réglementation
-
Mettre en œuvre des opérations CRUD de manière sécurisée
Évaluation : Lundi 19 septembre 2022
-> Validé.
Commentaire :
Les opérations de création, de lecture, de mise à jour et de suppression ont été correctement implémentées.
-> Validé.
Commentaire :
Le backend de l'application ne tombe pas en panne et il n'y a pas d'erreurs sur la console lors de l'exécution de l'application. Le projet utilise Express, Node.js et MongoDB.
-> Validé.
Commentaires :
Les mots de passe sont hachés en base. Une authentification est requise sur toutes les routes.
Un pulgin Mongoose est utilisé pour garantir l'unicité des adresses mails et pour signaler les erreurs en base.
L'application est exécutable avec succès en local.
Le contenu du dossier images est ajouté à gitignore.
Points forts :
Code propre, indenté et commenté.
Utilisation de bcrypt, mongoose-unique-validator, dotenv, helmet, express-rate-limit, jsonwebtoken, multer, password-validator.
Contrôle effectué avant modification ou suppression d'une sauce pour s'assurer que seul le propriétaire de la sauce peut réaliser cette action.
Axes d'amélioration :
Supprimer l'ancienne image dans le dossier image lors de la modification d'une sauce. (rectifié, après la soutenance)
Ne pas livrer le fichier .env juste un fichier .env.sample (fait sur github mais pas dans le livrable)
Remarques :
Très belle présentation orale et visuelle avec un support.
Marie a très bien expliqué son code pour montrer les compétences acquises.
Très bon travail dans l'ensemble.
Félicitations Marie! bon courage pour la suite.
- Node.js® - Environnement d’exécution JavaScript construit sur le moteur JavaScript V8 de Chrome.
- Mongoose - Bibliothèque de programmation orientée objet JavaScript qui crée une connexion entre MongoDB et l'environnement d'exécution JavaScript Node.js.
- MongoDB Atlas Database - Système de gestion de base de données orienté documents
- Postman - Application permettant de tester des API
- Visual Studio Code - Editeur de codes
Cloner le Repository
.- Dans le terminal de commande, depuis le dossier
frontend
, tapernpm install
puisnpm start
. - Dans le dossier
backend
, renommer le fichier.env.example
en.env
et y mettre vos variables d'environnement. - Dans le terminal de commande, depuis le dossier
backend
, tapernpm install
puisnode server
ounodemon server
. - Le serveur doit fonctionner sur
localhost
avec le port par défaut4200
.
- Marie Le Carvennec alias @karvaneg