]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/middlewares/validators/pods.js
Add email to pods
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / pods.js
index fd3d1e2f243375ab5a2b52ccf07c330614b45d28..0bf4b18446fb04791e258ef3df44bc45f7545a1a 100644 (file)
@@ -1,8 +1,11 @@
 'use strict'
 
 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')
 
 const validatorsPod = {
   makeFriends,
@@ -10,7 +13,12 @@ const validatorsPod = {
 }
 
 function makeFriends (req, res, next) {
-  req.checkBody('urls', 'Should have an array of unique urls').isEachUniqueUrlValid()
+  // Force https if the administrator wants to make friends
+  if (utils.isTestInstance() === false && constants.CONFIG.WEBSERVER.SCHEME === 'http') {
+    return res.status(400).send('Cannot make friends with a non HTTPS webserver.')
+  }
+
+  req.checkBody('hosts', 'Should have an array of unique hosts').isEachUniqueHostValid()
 
   logger.debug('Checking makeFriends parameters', { parameters: req.body })
 
@@ -23,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('url', 'Should have an url').notEmpty().isURL({ require_protocol: true })
+  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()
+    })
+  })
 }
 
 // ---------------------------------------------------------------------------