X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideo-channels.ts;h=79587b0284aa4fef262c4036c68050d2ebf28856;hb=0491173a61aed66205c017e0d7e0503ea316c144;hp=e3a11a41b58aff00f221f571b93e8a8340367a87;hpb=48dce1c90dff4e90a4bcffefaecf157336cf904b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/video-channels.ts b/server/middlewares/validators/video-channels.ts index e3a11a41b..79587b028 100644 --- a/server/middlewares/validators/video-channels.ts +++ b/server/middlewares/validators/video-channels.ts @@ -1,33 +1,36 @@ import * as express from 'express' import { body, param } from 'express-validator/check' import { UserRight } from '../../../shared' -import { isAccountIdExist } from '../../helpers/custom-validators/accounts' -import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc' +import { isAccountNameWithHostExist } from '../../helpers/custom-validators/accounts' import { - isVideoChannelDescriptionValid, isVideoChannelExist, - isVideoChannelNameValid, isVideoChannelSupportValid + isLocalVideoChannelNameExist, + isVideoChannelDescriptionValid, + isVideoChannelNameValid, + isVideoChannelNameWithHostExist, + isVideoChannelSupportValid } from '../../helpers/custom-validators/video-channels' import { logger } from '../../helpers/logger' import { UserModel } from '../../models/account/user' import { VideoChannelModel } from '../../models/video/video-channel' import { areValidationErrors } from './utils' +import { isActorPreferredUsernameValid } from '../../helpers/custom-validators/activitypub/actor' 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 = [ - param('accountId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid account id'), - body('name').custom(isVideoChannelNameValid).withMessage('Should have a valid name'), + body('name').custom(isActorPreferredUsernameValid).withMessage('Should have a valid channel name'), + 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'), @@ -41,9 +44,8 @@ const videoChannelsAddValidator = [ ] const videoChannelsUpdateValidator = [ - param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), - param('accountId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid account id'), - body('name').optional().custom(isVideoChannelNameValid).withMessage('Should have a valid name'), + param('nameWithHost').exists().withMessage('Should have an video channel name with host'), + 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'), @@ -51,8 +53,7 @@ const videoChannelsUpdateValidator = [ logger.debug('Checking videoChannelsUpdate parameters', { parameters: req.body }) if (areValidationErrors(req, res)) return - if (!await isAccountIdExist(req.params.accountId, res)) return - if (!await isVideoChannelExist(req.params.id, res)) return + if (!await isVideoChannelNameWithHostExist(req.params.nameWithHost, res)) return // We need to make additional checks if (res.locals.videoChannel.Actor.isOwned() === false) { @@ -72,17 +73,14 @@ const videoChannelsUpdateValidator = [ ] const videoChannelsRemoveValidator = [ - param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), - param('accountId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid account id'), + param('nameWithHost').exists().withMessage('Should have an video channel name with host'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking videoChannelsRemove parameters', { parameters: req.params }) if (areValidationErrors(req, res)) return - if (!await isAccountIdExist(req.params.accountId, res)) return - if (!await isVideoChannelExist(req.params.id, res)) return + if (!await isVideoChannelNameWithHostExist(req.params.nameWithHost, res)) return - // Check if the user who did the request is able to delete the video if (!checkUserCanDeleteVideoChannel(res.locals.oauth.token.User, res.locals.videoChannel, res)) return if (!await checkVideoChannelIsNotTheLastOne(res)) return @@ -90,17 +88,28 @@ const videoChannelsRemoveValidator = [ } ] -const videoChannelsGetValidator = [ - param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), - param('accountId').optional().custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid account id'), +const videoChannelsNameWithHostValidator = [ + param('nameWithHost').exists().withMessage('Should have an video channel name with host'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking videoChannelsGet parameters', { parameters: req.params }) + logger.debug('Checking videoChannelsNameWithHostValidator parameters', { parameters: req.params }) if (areValidationErrors(req, res)) return - // On some routes, accountId is optional (for example in the ActivityPub route) - if (req.params.accountId && !await isAccountIdExist(req.params.accountId, res)) return - if (!await isVideoChannelExist(req.params.id, res)) return + + if (!await isVideoChannelNameWithHostExist(req.params.nameWithHost, res)) return + + return next() + } +] + +const localVideoChannelValidator = [ + param('name').custom(isVideoChannelNameValid).withMessage('Should have a valid video channel name'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking localVideoChannelValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + if (!await isLocalVideoChannelNameExist(req.params.name, res)) return return next() } @@ -113,7 +122,8 @@ export { videoChannelsAddValidator, videoChannelsUpdateValidator, videoChannelsRemoveValidator, - videoChannelsGetValidator + videoChannelsNameWithHostValidator, + localVideoChannelValidator } // ---------------------------------------------------------------------------