]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/middlewares/validators/utils.ts
Implemented configurable minimum signup age
[github/Chocobozzz/PeerTube.git] / server / middlewares / validators / utils.ts
1 import * as express from 'express'
2 import { query, validationResult } from 'express-validator'
3 import { logger } from '../../helpers/logger'
4 import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
5
6 function areValidationErrors (req: express.Request, res: express.Response) {
7 const errors = validationResult(req)
8
9 if (!errors.isEmpty()) {
10 logger.warn('Incorrect request parameters', { path: req.originalUrl, err: errors.mapped() })
11 res.status(HttpStatusCode.BAD_REQUEST_400)
12 .json({ errors: errors.mapped() })
13
14 return true
15 }
16
17 return false
18 }
19
20 function checkSort (sortableColumns: string[], tags: string[] = []) {
21 return [
22 query('sort').optional().isIn(sortableColumns).withMessage('Should have correct sortable column'),
23
24 (req: express.Request, res: express.Response, next: express.NextFunction) => {
25 logger.debug('Checking sort parameters', { parameters: req.query, tags })
26
27 if (areValidationErrors(req, res)) return
28
29 return next()
30 }
31 ]
32 }
33
34 function createSortableColumns (sortableColumns: string[]) {
35 const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn)
36
37 return sortableColumns.concat(sortableColumnDesc)
38 }
39
40 // ---------------------------------------------------------------------------
41
42 export {
43 areValidationErrors,
44 checkSort,
45 createSortableColumns
46 }