]>
Commit | Line | Data |
---|---|---|
1 | import express from 'express' | |
2 | import { query } from 'express-validator' | |
3 | import { logger } from '@server/helpers/logger' | |
4 | import { SORTABLE_COLUMNS } from '../../initializers/constants' | |
5 | import { areValidationErrors } from './shared' | |
6 | ||
7 | function checkSortFactory (columns: string[], tags: string[] = []) { | |
8 | return checkSort(createSortableColumns(columns), tags) | |
9 | } | |
10 | ||
11 | function checkSort (sortableColumns: string[], tags: string[] = []) { | |
12 | return [ | |
13 | query('sort').optional().isIn(sortableColumns).withMessage('Should have correct sortable column'), | |
14 | ||
15 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | |
16 | logger.debug('Checking sort parameters', { parameters: req.query, tags }) | |
17 | ||
18 | if (areValidationErrors(req, res)) return | |
19 | ||
20 | return next() | |
21 | } | |
22 | ] | |
23 | } | |
24 | ||
25 | function createSortableColumns (sortableColumns: string[]) { | |
26 | const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn) | |
27 | ||
28 | return sortableColumns.concat(sortableColumnDesc) | |
29 | } | |
30 | ||
31 | const adminUsersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ADMIN_USERS) | |
32 | const accountsSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS) | |
33 | const jobsSortValidator = checkSortFactory(SORTABLE_COLUMNS.JOBS, [ 'jobs' ]) | |
34 | const abusesSortValidator = checkSortFactory(SORTABLE_COLUMNS.ABUSES) | |
35 | const videosSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS) | |
36 | const videoImportsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_IMPORTS) | |
37 | const videosSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS_SEARCH) | |
38 | const videoChannelsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS_SEARCH) | |
39 | const videoPlaylistsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS_SEARCH) | |
40 | const videoCommentsValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENTS) | |
41 | const videoCommentThreadsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENT_THREADS) | |
42 | const videoRatesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_RATES) | |
43 | const blacklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.BLACKLISTS) | |
44 | const videoChannelsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS) | |
45 | const instanceFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWERS) | |
46 | const instanceFollowingSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWING) | |
47 | const userSubscriptionsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_SUBSCRIPTIONS) | |
48 | const accountsBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS_BLOCKLIST) | |
49 | const serversBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.SERVERS_BLOCKLIST) | |
50 | const userNotificationsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_NOTIFICATIONS) | |
51 | const videoPlaylistsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS) | |
52 | const pluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.PLUGINS) | |
53 | const availablePluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.AVAILABLE_PLUGINS) | |
54 | const videoRedundanciesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_REDUNDANCIES) | |
55 | ||
56 | const accountsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNT_FOLLOWERS) | |
57 | const videoChannelsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.CHANNEL_FOLLOWERS) | |
58 | ||
59 | // --------------------------------------------------------------------------- | |
60 | ||
61 | export { | |
62 | adminUsersSortValidator, | |
63 | abusesSortValidator, | |
64 | videoChannelsSortValidator, | |
65 | videoImportsSortValidator, | |
66 | videoCommentsValidator, | |
67 | videosSearchSortValidator, | |
68 | videosSortValidator, | |
69 | blacklistSortValidator, | |
70 | accountsSortValidator, | |
71 | instanceFollowersSortValidator, | |
72 | instanceFollowingSortValidator, | |
73 | jobsSortValidator, | |
74 | videoCommentThreadsSortValidator, | |
75 | videoRatesSortValidator, | |
76 | userSubscriptionsSortValidator, | |
77 | availablePluginsSortValidator, | |
78 | videoChannelsSearchSortValidator, | |
79 | accountsBlocklistSortValidator, | |
80 | serversBlocklistSortValidator, | |
81 | userNotificationsSortValidator, | |
82 | videoPlaylistsSortValidator, | |
83 | videoRedundanciesSortValidator, | |
84 | videoPlaylistsSearchSortValidator, | |
85 | accountsFollowersSortValidator, | |
86 | videoChannelsFollowersSortValidator, | |
87 | pluginsSortValidator | |
88 | } |