X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Fvideos%2Fvideo-channels.ts;h=882fb2b843a653dbe5fa02f7c55a26ef253dd9c3;hb=610d0be13b3d01f653ef269271dd667a57c85ef2;hp=f5a59cacbbcbdd6da6e1461d7003b6452eb7048f;hpb=a41b9da1a9ce49df82ea10c82de4c2fbc6d1b189;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/videos/video-channels.ts b/server/middlewares/validators/videos/video-channels.ts index f5a59cacb..882fb2b84 100644 --- a/server/middlewares/validators/videos/video-channels.ts +++ b/server/middlewares/validators/videos/video-channels.ts @@ -1,20 +1,20 @@ import * as express from 'express' -import { body, param } from 'express-validator/check' +import { body, param, query } from 'express-validator' import { UserRight } from '../../../../shared' import { - doesLocalVideoChannelNameExist, - doesVideoChannelNameWithHostExist, isVideoChannelDescriptionValid, isVideoChannelNameValid, 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' import { ActorModel } from '../../../models/activitypub/actor' import { isBooleanValid } from '../../../helpers/custom-validators/misc' +import { doesLocalVideoChannelNameExist, doesVideoChannelNameWithHostExist } from '../../../helpers/middlewares' +import { MChannelAccountDefault, MUser } from '@server/typings/models' +import { VIDEO_CHANNELS } from '@server/initializers/constants' const videoChannelsAddValidator = [ body('name').custom(isActorPreferredUsernameValid).withMessage('Should have a valid channel name'), @@ -35,6 +35,14 @@ const videoChannelsAddValidator = [ return false } + const count = await VideoChannelModel.countByAccount(res.locals.oauth.token.User.Account.id) + if (count >= VIDEO_CHANNELS.MAX_PER_USER) { + res.status(400) + .send({ error: `You cannot create more than ${VIDEO_CHANNELS.MAX_PER_USER} channels` }) + .end() + return false + } + return next() } ] @@ -120,6 +128,15 @@ const localVideoChannelValidator = [ } ] +const videoChannelStatsValidator = [ + query('withStats').optional().isBoolean().withMessage('Should have a valid stats flag'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + if (areValidationErrors(req, res)) return + return next() + } +] + // --------------------------------------------------------------------------- export { @@ -127,12 +144,13 @@ export { videoChannelsUpdateValidator, videoChannelsRemoveValidator, videoChannelsNameWithHostValidator, - localVideoChannelValidator + localVideoChannelValidator, + videoChannelStatsValidator } // --------------------------------------------------------------------------- -function checkUserCanDeleteVideoChannel (user: UserModel, videoChannel: VideoChannelModel, res: express.Response) { +function checkUserCanDeleteVideoChannel (user: MUser, videoChannel: MChannelAccountDefault, res: express.Response) { if (videoChannel.Actor.isOwned() === false) { res.status(403) .json({ error: 'Cannot remove video channel of another server.' })