X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideos.ts;h=8a9b383b88c567abf1b0db3f1eb5d7673a2a24f4;hb=72c7248b6fdcdb2175e726ff51b42e7555f2bd84;hp=deed075245209f6e2258c0681bddf8a2879e8651;hpb=35bf0c83c80f59ca79f4b84fac8700f17adeb22d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/videos.ts b/server/middlewares/validators/videos.ts index deed07524..8a9b383b8 100644 --- a/server/middlewares/validators/videos.ts +++ b/server/middlewares/validators/videos.ts @@ -15,21 +15,26 @@ import { isVideoLanguageValid, isVideoTagsValid, isVideoNSFWValid, - isVideoIdOrUUIDValid, + isIdOrUUIDValid, isVideoAbuseReasonValid, isVideoRatingTypeValid, getDurationFromVideoFile, - checkVideoExists + checkVideoExists, + isIdValid } from '../../helpers' const videosAddValidator = [ - body('videofile').custom((value, { req }) => isVideoFile(req.files)).withMessage('Should have a valid file'), + body('videofile').custom((value, { req }) => isVideoFile(req.files)).withMessage( + 'This file is not supported. Please, make sure it is of the following type : ' + + CONSTRAINTS_FIELDS.VIDEOS.EXTNAME.join(', ') + ), body('name').custom(isVideoNameValid).withMessage('Should have a valid name'), body('category').custom(isVideoCategoryValid).withMessage('Should have a valid category'), body('licence').custom(isVideoLicenceValid).withMessage('Should have a valid licence'), body('language').optional().custom(isVideoLanguageValid).withMessage('Should have a valid language'), body('nsfw').custom(isVideoNSFWValid).withMessage('Should have a valid NSFW attribute'), body('description').custom(isVideoDescriptionValid).withMessage('Should have a valid description'), + body('channelId').custom(isIdValid).withMessage('Should have correct video channel id'), body('tags').optional().custom(isVideoTagsValid).withMessage('Should have correct tags'), (req: express.Request, res: express.Response, next: express.NextFunction) => { @@ -39,7 +44,20 @@ const videosAddValidator = [ const videoFile: Express.Multer.File = req.files['videofile'][0] const user = res.locals.oauth.token.User - user.isAbleToUploadVideo(videoFile) + return db.VideoChannel.loadByIdAndAuthor(req.body.channelId, user.Author.id) + .then(videoChannel => { + if (!videoChannel) { + res.status(400) + .json({ error: 'Unknown video video channel for this author.' }) + .end() + + return undefined + } + + res.locals.videoChannel = videoChannel + + return user.isAbleToUploadVideo(videoFile) + }) .then(isAble => { if (isAble === false) { res.status(403) @@ -85,7 +103,7 @@ const videosAddValidator = [ ] const videosUpdateValidator = [ - param('id').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), + param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), body('name').optional().custom(isVideoNameValid).withMessage('Should have a valid name'), body('category').optional().custom(isVideoCategoryValid).withMessage('Should have a valid category'), body('licence').optional().custom(isVideoLicenceValid).withMessage('Should have a valid licence'), @@ -106,7 +124,7 @@ const videosUpdateValidator = [ .end() } - if (res.locals.video.Author.userId !== res.locals.oauth.token.User.id) { + if (res.locals.video.VideoChannel.Author.userId !== res.locals.oauth.token.User.id) { return res.status(403) .json({ error: 'Cannot update video of another user' }) .end() @@ -119,7 +137,7 @@ const videosUpdateValidator = [ ] const videosGetValidator = [ - param('id').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), + param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videosGet parameters', { parameters: req.params }) @@ -131,7 +149,7 @@ const videosGetValidator = [ ] const videosRemoveValidator = [ - param('id').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), + param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videosRemove parameters', { parameters: req.params }) @@ -159,7 +177,7 @@ const videosSearchValidator = [ ] const videoAbuseReportValidator = [ - param('id').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), + param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), body('reason').custom(isVideoAbuseReasonValid).withMessage('Should have a valid reason'), (req: express.Request, res: express.Response, next: express.NextFunction) => { @@ -172,7 +190,7 @@ const videoAbuseReportValidator = [ ] const videoRateValidator = [ - param('id').custom(isVideoIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), + param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), body('rating').custom(isVideoRatingTypeValid).withMessage('Should have a valid rate type'), (req: express.Request, res: express.Response, next: express.NextFunction) => {