X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideo-channels.ts;h=7f65f729085e521232d93ddec50267bc37e421a1;hb=019e47507212072a7b91fb18dd31b4170d9cb40c;hp=4683c91e139518f97ec7fc1c69a26ef15c8f6929;hpb=a2431b7dcbc72c05101dcdbe631ff84a823aeb51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/video-channels.ts b/server/middlewares/validators/video-channels.ts index 4683c91e1..7f65f7290 100644 --- a/server/middlewares/validators/video-channels.ts +++ b/server/middlewares/validators/video-channels.ts @@ -1,36 +1,38 @@ import * as express from 'express' import { body, param } from 'express-validator/check' import { UserRight } from '../../../shared' -import { isIdValid } from '../../helpers/custom-validators/misc' +import { isAccountIdExist, isAccountNameWithHostExist } from '../../helpers/custom-validators/accounts' +import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' import { isVideoChannelDescriptionValid, isVideoChannelExist, - isVideoChannelNameValid + isVideoChannelNameValid, + isVideoChannelSupportValid } from '../../helpers/custom-validators/video-channels' -import { isIdOrUUIDValid } from '../../helpers/index' import { logger } from '../../helpers/logger' -import { database as db } from '../../initializers' -import { UserInstance } from '../../models' +import { UserModel } from '../../models/account/user' +import { VideoChannelModel } from '../../models/video/video-channel' import { areValidationErrors } from './utils' -import { isAccountIdExist } from '../../helpers/custom-validators/accounts' -import { VideoChannelInstance } from '../../models/video/video-channel-interface' +import { isAvatarFile } from '../../helpers/custom-validators/users' +import { CONSTRAINTS_FIELDS } from '../../initializers' const listVideoAccountChannelsValidator = [ - param('accountId').custom(isIdOrUUIDValid).withMessage('Should have a valid account id'), + param('accountName').exists().withMessage('Should have a valid account name'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking listVideoAccountChannelsValidator parameters', { parameters: req.body }) if (areValidationErrors(req, res)) return - if (!await isAccountIdExist(req.params.accountId, res)) return + if (!await isAccountNameWithHostExist(req.params.accountName, res)) return return next() } ] const videoChannelsAddValidator = [ - body('name').custom(isVideoChannelNameValid).withMessage('Should have a valid name'), - body('description').custom(isVideoChannelDescriptionValid).withMessage('Should have a valid description'), + body('displayName').custom(isVideoChannelNameValid).withMessage('Should have a valid display name'), + body('description').optional().custom(isVideoChannelDescriptionValid).withMessage('Should have a valid description'), + body('support').optional().custom(isVideoChannelSupportValid).withMessage('Should have a valid support text'), (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videoChannelsAdd parameters', { parameters: req.body }) @@ -43,8 +45,9 @@ const videoChannelsAddValidator = [ const videoChannelsUpdateValidator = [ param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), - body('name').optional().custom(isVideoChannelNameValid).withMessage('Should have a valid name'), + body('displayName').optional().custom(isVideoChannelNameValid).withMessage('Should have a valid display name'), body('description').optional().custom(isVideoChannelDescriptionValid).withMessage('Should have a valid description'), + body('support').optional().custom(isVideoChannelSupportValid).withMessage('Should have a valid support text'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videoChannelsUpdate parameters', { parameters: req.body }) @@ -53,7 +56,7 @@ const videoChannelsUpdateValidator = [ if (!await isVideoChannelExist(req.params.id, res)) return // We need to make additional checks - if (res.locals.videoChannel.isOwned() === false) { + if (res.locals.videoChannel.Actor.isOwned() === false) { return res.status(403) .json({ error: 'Cannot update video channel of another server' }) .end() @@ -78,8 +81,7 @@ const videoChannelsRemoveValidator = [ if (areValidationErrors(req, res)) return if (!await isVideoChannelExist(req.params.id, res)) return - // Check if the user who did the request is able to delete the video - if (!checkUserCanDeleteVideoChannel(res.locals.user, res.locals.videoChannel, res)) return + if (!checkUserCanDeleteVideoChannel(res.locals.oauth.token.User, res.locals.videoChannel, res)) return if (!await checkVideoChannelIsNotTheLastOne(res)) return return next() @@ -93,30 +95,9 @@ const videoChannelsGetValidator = [ logger.debug('Checking videoChannelsGet parameters', { parameters: req.params }) if (areValidationErrors(req, res)) return - if (!await isVideoChannelExist(req.params.id, res)) return - - return next() - } -] - -const videoChannelsShareValidator = [ - param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), - param('accountId').custom(isIdValid).not().isEmpty().withMessage('Should have a valid account id'), - async (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking videoChannelShare parameters', { parameters: req.params }) - - if (areValidationErrors(req, res)) return if (!await isVideoChannelExist(req.params.id, res)) return - const share = await db.VideoChannelShare.load(res.locals.video.id, req.params.accountId) - if (!share) { - return res.status(404) - .end() - } - - res.locals.videoChannelShare = share - return next() } ] @@ -128,15 +109,13 @@ export { videoChannelsAddValidator, videoChannelsUpdateValidator, videoChannelsRemoveValidator, - videoChannelsGetValidator, - videoChannelsShareValidator + videoChannelsGetValidator } // --------------------------------------------------------------------------- -function checkUserCanDeleteVideoChannel (user: UserInstance, videoChannel: VideoChannelInstance, res: express.Response) { - // Retrieve the user who did the request - if (videoChannel.isOwned() === false) { +function checkUserCanDeleteVideoChannel (user: UserModel, videoChannel: VideoChannelModel, res: express.Response) { + if (videoChannel.Actor.isOwned() === false) { res.status(403) .json({ error: 'Cannot remove video channel of another server.' }) .end() @@ -159,7 +138,7 @@ function checkUserCanDeleteVideoChannel (user: UserInstance, videoChannel: Video } async function checkVideoChannelIsNotTheLastOne (res: express.Response) { - const count = await db.VideoChannel.countByAccount(res.locals.oauth.token.User.Account.id) + const count = await VideoChannelModel.countByAccount(res.locals.oauth.token.User.Account.id) if (count <= 1) { res.status(409)