X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideo-blacklist.ts;h=95a2b9f170824919f27658380d6dfff863ddbf20;hb=d9eaee3939bf2e93e5d775d32bce77842201faba;hp=f1cc0495042127b422a0f4db2162d67277caa82b;hpb=a2431b7dcbc72c05101dcdbe631ff84a823aeb51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/video-blacklist.ts b/server/middlewares/validators/video-blacklist.ts index f1cc04950..95a2b9f17 100644 --- a/server/middlewares/validators/video-blacklist.ts +++ b/server/middlewares/validators/video-blacklist.ts @@ -1,10 +1,10 @@ import * as express from 'express' -import { param } from 'express-validator/check' -import { isIdOrUUIDValid, logger } from '../../helpers' +import { body, param } from 'express-validator/check' +import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' import { isVideoExist } from '../../helpers/custom-validators/videos' -import { database as db } from '../../initializers/database' -import { VideoInstance } from '../../models/video/video-interface' +import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' +import { isVideoBlacklistExist, isVideoBlacklistReasonValid } from '../../helpers/custom-validators/video-blacklist' const videosBlacklistRemoveValidator = [ param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), @@ -14,7 +14,7 @@ const videosBlacklistRemoveValidator = [ if (areValidationErrors(req, res)) return if (!await isVideoExist(req.params.videoId, res)) return - if (!await checkVideoIsBlacklisted(res.locals.video, res)) return + if (!await isVideoBlacklistExist(res.locals.video.id, res)) return return next() } @@ -22,47 +22,41 @@ const videosBlacklistRemoveValidator = [ const videosBlacklistAddValidator = [ param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), + body('reason') + .optional() + .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking videosBlacklist parameters', { parameters: req.params }) + logger.debug('Checking videosBlacklistAdd parameters', { parameters: req.params }) if (areValidationErrors(req, res)) return if (!await isVideoExist(req.params.videoId, res)) return - if (!checkVideoIsBlacklistable(res.locals.video, res)) return return next() } ] -// --------------------------------------------------------------------------- +const videosBlacklistUpdateValidator = [ + param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), + body('reason') + .optional() + .custom(isVideoBlacklistReasonValid).withMessage('Should have a valid reason'), -export { - videosBlacklistAddValidator, - videosBlacklistRemoveValidator -} -// --------------------------------------------------------------------------- + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking videosBlacklistUpdate parameters', { parameters: req.params }) -function checkVideoIsBlacklistable (video: VideoInstance, res: express.Response) { - if (video.isOwned() === true) { - res.status(403) - .json({ error: 'Cannot blacklist a local video' }) - .end() + if (areValidationErrors(req, res)) return + if (!await isVideoExist(req.params.videoId, res)) return + if (!await isVideoBlacklistExist(res.locals.video.id, res)) return - return false + return next() } +] - return true -} - -async function checkVideoIsBlacklisted (video: VideoInstance, res: express.Response) { - const blacklistedVideo = await db.BlacklistedVideo.loadByVideoId(video.id) - if (!blacklistedVideo) { - res.status(404) - .send('Blacklisted video not found') - - return false - } +// --------------------------------------------------------------------------- - res.locals.blacklistedVideo = blacklistedVideo - return true +export { + videosBlacklistAddValidator, + videosBlacklistRemoveValidator, + videosBlacklistUpdateValidator }