diff --git a/api.js b/api.js index d1742eb664085f28eaa153487a7c2e8d4a564f98..0de60ff2cca2cc0c381296086ae82f5e56623cde 100644 --- a/api.js +++ b/api.js @@ -17,7 +17,6 @@ const dbHelper = require('./dbhelper.js'); module.exports = (passport) => { const app = express(); - //fonction qui vérfie si parmis les champs de req.body ou req.params, il y a un champ dont le contenu comprend des attack par injection sql; const checkInjection = (req, res, next) => { const regex = /['"=;*]/; @@ -41,7 +40,6 @@ module.exports = (passport) => { } - // Authentification pour accéder aux parties privées de l'api (on n'en a pas dans cet exemple) // et aux templates privés // C'est ici qu'on utilise passport pour créer une session utilisateur @@ -392,6 +390,14 @@ module.exports = (passport) => { app.post('/produit', require('connect-ensure-login').ensureLoggedIn(), function (req, res) { + + if (req.body.quantite_min > req.body.quantite_max) { + res.set('Content-type', 'application/json'); + res.status(422).send({ code: 422, desc: 'FORBIDDEN_VALUE', message: 'quantite_min doit être inférieur à quantite_max' }); + res.end(); + return; + } + console.log("POST /produit", req.body); // control des paramètres de la requête pour trouver d'éventuelles injections sql if (!checkInjection(req, res)) return; @@ -421,11 +427,22 @@ module.exports = (passport) => { // PUT PRODUIT app.put('/produit/:nom_produit', require('connect-ensure-login').ensureLoggedIn(), - function (req, res) { + async function (req, res) { console.log("PUT /produit/", req.params.nom_produit, req.body); // control des paramètres de la requête pour trouver d'éventuelles injections sql if (!checkInjection(req, res)) return; + const produitToUpdate = await dbHelper.produit.byNom(req.params.nom_produit); + + if (req.body.quantite_min) { + if (req.body.quantite_min > produitToUpdate.quantite_max) { + res.set('Content-type', 'application/json'); + res.status(422).send({ code: 422, message: 'quantite Minimal supérieur à quantité maximal' }); + res.end(); + return; + } + } + dbHelper.produit.update( req.params.nom_produit, req.body.nom_produit, @@ -437,7 +454,7 @@ module.exports = (passport) => { req.body.quantite_course, ).then(produit => { res.set('Content-type', 'application/json'); - res.status(200).send({ message: 'produit modifié' }); + res.status(200).send({ code: 200, desc: 'EDIT', message: 'produit modifié' }); res.end(); return; }).catch(sqlerr => { diff --git a/public/js/editProduit.js b/public/js/editProduit.js index d891e20359da5ab143acb1d4bd9e1f31170a2d70..110e4ada3d847c05119eac7b887c203ff9261e01 100644 --- a/public/js/editProduit.js +++ b/public/js/editProduit.js @@ -91,9 +91,12 @@ function submitEditProduit(nomProduit, prixProduit, quantiteMin, maxQuantity, fo }, body: formBody }).then( - res => res.json() + res => { + return res.json() + } ).then( res => { + console.log(res) alert(res.message) location.reload() }