aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/middlewares
diff options
context:
space:
mode:
Diffstat (limited to 'server/middlewares')
-rw-r--r--server/middlewares/validators/video-blacklist.ts55
1 files changed, 24 insertions, 31 deletions
diff --git a/server/middlewares/validators/video-blacklist.ts b/server/middlewares/validators/video-blacklist.ts
index 3c1ef1b4e..95a2b9f17 100644
--- a/server/middlewares/validators/video-blacklist.ts
+++ b/server/middlewares/validators/video-blacklist.ts
@@ -1,11 +1,10 @@
1import * as express from 'express' 1import * as express from 'express'
2import { param } from 'express-validator/check' 2import { body, param } from 'express-validator/check'
3import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' 3import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc'
4import { isVideoExist } from '../../helpers/custom-validators/videos' 4import { isVideoExist } from '../../helpers/custom-validators/videos'
5import { logger } from '../../helpers/logger' 5import { logger } from '../../helpers/logger'
6import { VideoModel } from '../../models/video/video'
7import { VideoBlacklistModel } from '../../models/video/video-blacklist'
8import { areValidationErrors } from './utils' 6import { areValidationErrors } from './utils'
7import { isVideoBlacklistExist, isVideoBlacklistReasonValid } from '../../helpers/custom-validators/video-blacklist'
9 8
10const videosBlacklistRemoveValidator = [ 9const videosBlacklistRemoveValidator = [
11 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), 10 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
@@ -15,7 +14,7 @@ const videosBlacklistRemoveValidator = [
15 14
16 if (areValidationErrors(req, res)) return 15 if (areValidationErrors(req, res)) return
17 if (!await isVideoExist(req.params.videoId, res)) return 16 if (!await isVideoExist(req.params.videoId, res)) return
18 if (!await checkVideoIsBlacklisted(res.locals.video, res)) return 17 if (!await isVideoBlacklistExist(res.locals.video.id, res)) return
19 18
20 return next() 19 return next()
21 } 20 }
@@ -23,47 +22,41 @@ const videosBlacklistRemoveValidator = [
23 22
24const videosBlacklistAddValidator = [ 23const videosBlacklistAddValidator = [
25 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), 24 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
25 body('reason')
26 .optional()
27 .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'),
26 28
27 async (req: express.Request, res: express.Response, next: express.NextFunction) => { 29 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
28 logger.debug('Checking videosBlacklist parameters', { parameters: req.params }) 30 logger.debug('Checking videosBlacklistAdd parameters', { parameters: req.params })
29 31
30 if (areValidationErrors(req, res)) return 32 if (areValidationErrors(req, res)) return
31 if (!await isVideoExist(req.params.videoId, res)) return 33 if (!await isVideoExist(req.params.videoId, res)) return
32 if (!checkVideoIsBlacklistable(res.locals.video, res)) return
33 34
34 return next() 35 return next()
35 } 36 }
36] 37]
37 38
38// --------------------------------------------------------------------------- 39const videosBlacklistUpdateValidator = [
40 param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'),
41 body('reason')
42 .optional()
43 .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'),
39 44
40export { 45 async (req: express.Request, res: express.Response, next: express.NextFunction) => {
41 videosBlacklistAddValidator, 46 logger.debug('Checking videosBlacklistUpdate parameters', { parameters: req.params })
42 videosBlacklistRemoveValidator
43}
44// ---------------------------------------------------------------------------
45 47
46function checkVideoIsBlacklistable (video: VideoModel, res: express.Response) { 48 if (areValidationErrors(req, res)) return
47 if (video.isOwned() === true) { 49 if (!await isVideoExist(req.params.videoId, res)) return
48 res.status(403) 50 if (!await isVideoBlacklistExist(res.locals.video.id, res)) return
49 .json({ error: 'Cannot blacklist a local video' })
50 .end()
51 51
52 return false 52 return next()
53 } 53 }
54]
54 55
55 return true 56// ---------------------------------------------------------------------------
56}
57
58async function checkVideoIsBlacklisted (video: VideoModel, res: express.Response) {
59 const blacklistedVideo = await VideoBlacklistModel.loadByVideoId(video.id)
60 if (!blacklistedVideo) {
61 res.status(404)
62 .send('Blacklisted video not found')
63
64 return false
65 }
66 57
67 res.locals.blacklistedVideo = blacklistedVideo 58export {
68 return true 59 videosBlacklistAddValidator,
60 videosBlacklistRemoveValidator,
61 videosBlacklistUpdateValidator
69} 62}