From 9e90ed6ea48f3ac98f27adb8ea43c7276b677e31 Mon Sep 17 00:00:00 2001
From: Damien <damien.armillon@gmail.com>
Date: Fri, 3 May 2019 17:02:33 +0200
Subject: [PATCH] =?UTF-8?q?Am=C3=A9liore=20la=20validation=20de=20cr=C3=A9?=
 =?UTF-8?q?ation=20de=20toucan?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backend/routes/routesToucan.js | 47 ++++++++++++++++++----------------
 backend/utils/schema.js        |  4 ++-
 2 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/backend/routes/routesToucan.js b/backend/routes/routesToucan.js
index 743518c..f3336de 100644
--- a/backend/routes/routesToucan.js
+++ b/backend/routes/routesToucan.js
@@ -29,28 +29,31 @@ router.route("/toucans")
         upload.fields([{name:"toucan", maxCount:1 }, {name:"cover", maxCount:1 }]),
         celebrate({body:newToucan}),
         function(req,res) {
-            var toucan = new Toucan(req.body);
-            var id = (toucan._id).toString();
-            var index;
-            // On renome les fichier avec la clé de l'entrée dans la database
-            for (index in req.files) {
-                var file = req.files[index][0];
-                var extension = path.extname(file.path);
-                var newPath = file.destination+"/"+id+extension;
-                fs.rename(file.path,newPath, err => {
+            if(req.files.length!=2){
+                res.status(400).send("Il manque un fichier");
+            } else {
+                var toucan = new Toucan(req.body);
+                var id = (toucan._id).toString();
+                var index;
+                // On renome les fichier avec la clé de l'entrée dans la database
+                for (index in req.files) {
+                    var file = req.files[index][0];
+                    var extension = path.extname(file.path);
+                    var newPath = file.destination+"/"+id+extension;
+                    fs.rename(file.path,newPath, err => {
+                        if (err) {
+                            res.err(err);
+                        }
+                    });
+                }
+                toucan.save(function(err) {
                     if (err) {
-                        res.err(err);
+                        res.status(400).send(err);
+                    } else {
+                        res.send({message: "Toucan ajouté !", id: id});
                     }
                 });
-            }
-            toucan.save(function(err) {
-                if (err) {
-                    res.send(err);
-                } else {
-                    res.send({message: "Toucan ajouté !", id: id});
-                }
-            });
-        });
+            }});
 // Renvoie le pdf du toucan avec l'id donné
 router.route("/pdf/:id")
     .get(celebrate({params: validId}), function (req,res) {
@@ -84,7 +87,7 @@ router.route("/delete/:id")
         Toucan.deleteOne({_id:req.params.id},
             function(err) {
                 if (err) {
-                    res.send(err);
+                    res.send(500).send(err);
                 } else {    // Si on a supprimée l'entrée, on supprime le pdf
                     var pdfPath = path.format({
                         dir: env.savedExtensions[1].path,
@@ -93,7 +96,7 @@ router.route("/delete/:id")
                     });
                     fs.unlink(pdfPath, (err) => {
                         if (err) {
-                            res.send(err);
+                            res.status(500).send(err);
                         } else {    // Si on a supprimé le pdf on supprime l'image
                             var imgPath = path.join(env.savedExtensions[0].path,"/",req.params.id);
                             env.savedExtensions[0].extensions.forEach(ext => {
@@ -101,7 +104,7 @@ router.route("/delete/:id")
                                     imgPath = imgPath+ext;
                                     fs.unlink(imgPath, (err) => {
                                         if (err) {
-                                            res.send(err);
+                                            res.status(500).send(err);
                                         } else {
                                             res.send("Toucan supprimé");
                                         }
diff --git a/backend/utils/schema.js b/backend/utils/schema.js
index cdd8ce1..2ad2ada 100644
--- a/backend/utils/schema.js
+++ b/backend/utils/schema.js
@@ -1,7 +1,9 @@
 var { Joi } = require("celebrate");
 
 var newToucan = Joi.object({
-    title: Joi.string().alphanum().required(),
+    title: Joi.string()
+        .regex(/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._\s-]{1,60}$/) //Autorise la plupart des acents
+        .required(),
     date: Joi.date().required()
 });
 
-- 
GitLab