]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/middlewares/validators/pods.ts
require -> import
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / pods.ts
... / ...
CommitLineData
1import { database as db } from '../../initializers/database'
2import { checkErrors } from './utils'
3import { logger } from '../../helpers'
4import { CONFIG } from '../../initializers'
5import { hasFriends } from '../../lib'
6import { isTestInstance } from '../../helpers'
7
8function makeFriendsValidator (req, res, next) {
9 // Force https if the administrator wants to make friends
10 if (isTestInstance() === false && CONFIG.WEBSERVER.SCHEME === 'http') {
11 return res.status(400).send('Cannot make friends with a non HTTPS webserver.')
12 }
13
14 req.checkBody('hosts', 'Should have an array of unique hosts').isEachUniqueHostValid()
15
16 logger.debug('Checking makeFriends parameters', { parameters: req.body })
17
18 checkErrors(req, res, function () {
19 hasFriends(function (err, heHasFriends) {
20 if (err) {
21 logger.error('Cannot know if we have friends.', { error: err })
22 res.sendStatus(500)
23 }
24
25 if (heHasFriends === true) {
26 // We need to quit our friends before make new ones
27 return res.sendStatus(409)
28 }
29
30 return next()
31 })
32 })
33}
34
35function podsAddValidator (req, res, next) {
36 req.checkBody('host', 'Should have a host').isHostValid()
37 req.checkBody('email', 'Should have an email').isEmail()
38 req.checkBody('publicKey', 'Should have a public key').notEmpty()
39 logger.debug('Checking podsAdd parameters', { parameters: req.body })
40
41 checkErrors(req, res, function () {
42 db.Pod.loadByHost(req.body.host, function (err, pod) {
43 if (err) {
44 logger.error('Cannot load pod by host.', { error: err })
45 res.sendStatus(500)
46 }
47
48 // Pod with this host already exists
49 if (pod) {
50 return res.sendStatus(409)
51 }
52
53 return next()
54 })
55 })
56}
57
58// ---------------------------------------------------------------------------
59
60export {
61 makeFriendsValidator,
62 podsAddValidator
63}