export function gameRouter(gameHandler: GameHandlerService): Router { let router: Router = Router(); router.post('/', [ body('title_ko').isString().not().isEmpty(), body('title_en').isString().not().isEmpty(), body('players').isArray(), body('players.*').isInt().toInt(), body('box.width').isInt().toInt(), body('box.height').isInt().toInt(), body('box.depth').isInt().toInt(), body('setting.width').isInt().toInt(), body('setting.height').isInt().toInt(), ], handleValidationResult, gameHandler.createGame.bind(gameHandler) ); router.get('/:gid', [param('gid').isNumeric().not().isEmpty()], handleValidationResult, gameHandler.getGame.bind(gameHandler) ); return router; }
export function groupRouter(groupHandler: GroupHandlerService): Router { let router: Router = Router(); router.post('/', [body('name').isString().not().isEmpty()], handleValidationResult, groupHandler.createGroup.bind(groupHandler) ); router.get('/:groupid', [param('groupid').isNumeric().not().isEmpty()], handleValidationResult, groupHandler.getGroup.bind(groupHandler) ); return router; }
export function userRouter(userHandler: UserHandlerService): Router { let router: Router = Router(); router.post('/signin', [body('token').isString().not().isEmpty()], handleValidationResult, userHandler.createUser.bind(userHandler) ); router.get('/:uid', [param('uid').isNumeric().not().isEmpty()], handleValidationResult, userHandler.getUser.bind(userHandler) ); router.get('/', [query('authID').isString().optional()], handleValidationResult, userHandler.findUser.bind(userHandler) ); return router; }
const listVideoAccountChannelsValidator = [ param('accountId').custom(isIdOrUUIDValid).withMessage('Should have a valid account id'), 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 return next() } ] const videoChannelsAddValidator = [ body('name').custom(isVideoChannelNameValid).withMessage('Should have a valid 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 }) if (areValidationErrors(req, res)) return return next() } ] 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'),
import * as express from 'express' import { body, param } from 'express-validator/check' import { isTestInstance } from '../../helpers/core-utils' import { isEachUniqueHostValid, isHostValid } from '../../helpers/custom-validators/servers' import { logger } from '../../helpers/logger' import { getServerActor } from '../../helpers/utils' import { CONFIG } from '../../initializers' import { ActorFollowModel } from '../../models/activitypub/actor-follow' import { areValidationErrors } from './utils' const followValidator = [ body('hosts').custom(isEachUniqueHostValid).withMessage('Should have an array of unique hosts'), (req: express.Request, res: express.Response, next: express.NextFunction) => { // Force https if the administrator wants to make friends if (isTestInstance() === false && CONFIG.WEBSERVER.SCHEME === 'http') { return res.status(400) .json({ error: 'Cannot follow on a non HTTPS web server.' }) .end() } logger.debug('Checking follow parameters', { parameters: req.body }) if (areValidationErrors(req, res)) return return next() } ]
import * as express from 'express' import { body } from 'express-validator/check' import { isRootActivityValid } from '../../../helpers/custom-validators/activitypub/activity' import { logger } from '../../../helpers/logger' import { getServerActor } from '../../../helpers/utils' import { ActorModel } from '../../../models/activitypub/actor' import { areValidationErrors } from '../utils' const activityPubValidator = [ body('').custom((value, { req }) => isRootActivityValid(req.body)), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking activity pub parameters') if (areValidationErrors(req, res)) return const serverActor = await getServerActor() const remoteActor = res.locals.signature.actor as ActorModel if (serverActor.id === remoteActor.id) { logger.error('Receiving request in INBOX by ourselves!', req.body) return res.status(409).end() } return next() } ] // --------------------------------------------------------------------------- export { activityPubValidator
isUserDisplayNSFWValid, isUserPasswordValid, isUserRoleValid, isUserUsernameValid, isUserVideoQuotaValid } from '../../helpers/custom-validators/users' import { isVideoExist } from '../../helpers/custom-validators/videos' import { logger } from '../../helpers/logger' import { isSignupAllowed } from '../../helpers/utils' import { CONSTRAINTS_FIELDS } from '../../initializers' import { Redis } from '../../lib/redis' import { UserModel } from '../../models/account/user' import { areValidationErrors } from './utils' const usersAddValidator = [ body('username').custom(isUserUsernameValid).withMessage('Should have a valid username (lowercase alphanumeric characters)'), body('password').custom(isUserPasswordValid).withMessage('Should have a valid password'), body('email').isEmail().withMessage('Should have a valid email'), body('videoQuota').custom(isUserVideoQuotaValid).withMessage('Should have a valid user quota'), body('role').custom(isUserRoleValid).withMessage('Should have a valid role'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking usersAdd parameters', { parameters: omit(req.body, 'password') }) if (areValidationErrors(req, res)) return if (!await checkUserNameOrEmailDoesNotAlreadyExist(req.body.username, req.body.email, res)) return return next() } ]
isVideoPrivacyValid, isVideoRatingTypeValid, isVideoSupportValid, isVideoTagsValid } from '../../helpers/custom-validators/videos' import { getDurationFromVideoFile } from '../../helpers/ffmpeg-utils' import { logger } from '../../helpers/logger' import { CONSTRAINTS_FIELDS } from '../../initializers' import { UserModel } from '../../models/account/user' import { VideoModel } from '../../models/video/video' import { VideoChannelModel } from '../../models/video/video-channel' import { VideoShareModel } from '../../models/video/video-share' import { authenticate } from '../oauth' import { areValidationErrors } from './utils' const videosAddValidator = [ 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('thumbnailfile').custom((value, { req }) => isVideoImage(req.files, 'thumbnailfile')).withMessage( 'This thumbnail file is not supported. Please, make sure it is of the following type : ' + CONSTRAINTS_FIELDS.VIDEOS.IMAGE.EXTNAME.join(', ') ), body('previewfile').custom((value, { req }) => isVideoImage(req.files, 'previewfile')).withMessage( 'This preview file is not supported. Please, make sure it is of the following type : ' + CONSTRAINTS_FIELDS.VIDEOS.IMAGE.EXTNAME.join(', ') ), body('name').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'), body('language').optional().custom(isVideoLanguageValid).withMessage('Should have a valid language'),
param('threadId').custom(isIdValid).not().isEmpty().withMessage('Should have a valid threadId'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking listVideoThreadComments parameters.', { parameters: req.params }) if (areValidationErrors(req, res)) return if (!await isVideoExist(req.params.videoId, res)) return if (!await isVideoCommentThreadExist(req.params.threadId, res.locals.video, res)) return return next() } ] const addVideoCommentThreadValidator = [ param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), body('text').custom(isValidVideoCommentText).not().isEmpty().withMessage('Should have a valid comment text'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking addVideoCommentThread parameters.', { parameters: req.params, body: req.body }) if (areValidationErrors(req, res)) return if (!await isVideoExist(req.params.videoId, res)) return if (!isVideoCommentsEnabled(res.locals.video, res)) return return next() } ] const addVideoCommentReplyValidator = [ param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), param('commentId').custom(isIdValid).not().isEmpty().withMessage('Should have a valid commentId'),
import * as express from 'express' import { body } from 'express-validator/check' import { isUserNSFWPolicyValid, isUserVideoQuotaValid } from '../../helpers/custom-validators/users' import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' const customConfigUpdateValidator = [ body('instance.name').exists().withMessage('Should have a valid instance name'), body('instance.description').exists().withMessage('Should have a valid instance description'), body('instance.terms').exists().withMessage('Should have a valid instance terms'), body('instance.defaultClientRoute').exists().withMessage('Should have a valid instance default client route'), body('instance.defaultNSFWPolicy').custom(isUserNSFWPolicyValid).withMessage('Should have a valid NSFW policy'), body('instance.customizations.css').exists().withMessage('Should have a valid instance CSS customization'), body('instance.customizations.javascript').exists().withMessage('Should have a valid instance JavaScript customization'), body('cache.previews.size').isInt().withMessage('Should have a valid previews size'), body('signup.enabled').isBoolean().withMessage('Should have a valid signup enabled boolean'), body('signup.limit').isInt().withMessage('Should have a valid signup limit'), body('admin.email').isEmail().withMessage('Should have a valid administrator email'), body('user.videoQuota').custom(isUserVideoQuotaValid).withMessage('Should have a valid video quota'), body('transcoding.enabled').isBoolean().withMessage('Should have a valid transcoding enabled boolean'), body('transcoding.threads').isInt().withMessage('Should have a valid transcoding threads number'), body('transcoding.resolutions.240p').isBoolean().withMessage('Should have a valid transcoding 240p resolution enabled boolean'), body('transcoding.resolutions.360p').isBoolean().withMessage('Should have a valid transcoding 360p resolution enabled boolean'), body('transcoding.resolutions.480p').isBoolean().withMessage('Should have a valid transcoding 480p resolution enabled boolean'), body('transcoding.resolutions.720p').isBoolean().withMessage('Should have a valid transcoding 720p resolution enabled boolean'), body('transcoding.resolutions.1080p').isBoolean().withMessage('Should have a valid transcoding 1080p resolution enabled boolean'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking customConfigUpdateValidator parameters', { parameters: req.body }) if (areValidationErrors(req, res)) return