]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/middlewares/validators/pods.js
Server: add unique to unique indexes
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / pods.js
index 0723871b2ca3499c5504b4fbc156ae4276250fc6..0bf4b18446fb04791e258ef3df44bc45f7545a1a 100644 (file)
@@ -2,6 +2,7 @@
 
 const checkErrors = require('./utils').checkErrors
 const constants = require('../../initializers/constants')
+const db = require('../../initializers/database')
 const friends = require('../../lib/friends')
 const logger = require('../../helpers/logger')
 const utils = require('../../helpers/utils')
@@ -30,23 +31,35 @@ function makeFriends (req, res, next) {
 
       if (hasFriends === true) {
         // We need to quit our friends before make new ones
-        res.sendStatus(409)
-      } else {
-        return next()
+        return res.sendStatus(409)
       }
+
+      return next()
     })
   })
 }
 
 function podsAdd (req, res, next) {
-  req.checkBody('host', 'Should have an host').notEmpty().isURL()
+  req.checkBody('host', 'Should have a host').isHostValid()
+  req.checkBody('email', 'Should have an email').isEmail()
   req.checkBody('publicKey', 'Should have a public key').notEmpty()
+  logger.debug('Checking podsAdd parameters', { parameters: req.body })
 
-  // TODO: check we don't have it already
+  checkErrors(req, res, function () {
+    db.Pod.loadByHost(req.body.host, function (err, pod) {
+      if (err) {
+        logger.error('Cannot load pod by host.', { error: err })
+        res.sendStatus(500)
+      }
 
-  logger.debug('Checking podsAdd parameters', { parameters: req.body })
+      // Pod with this host already exists
+      if (pod) {
+        return res.sendStatus(409)
+      }
 
-  checkErrors(req, res, next)
+      return next()
+    })
+  })
 }
 
 // ---------------------------------------------------------------------------