]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/helpers/custom-validators/users.ts
autoplay next video support for playlists
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
... / ...
CommitLineData
1import * as validator from 'validator'
2import { UserRole } from '../../../shared'
3import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
4import { exists, isArray, isBooleanValid, isFileValid } from './misc'
5import { values } from 'lodash'
6
7const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS
8
9function isUserPasswordValid (value: string) {
10 return validator.isLength(value, USERS_CONSTRAINTS_FIELDS.PASSWORD)
11}
12
13function isUserVideoQuotaValid (value: string) {
14 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
15}
16
17function isUserVideoQuotaDailyValid (value: string) {
18 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
19}
20
21function isUserUsernameValid (value: string) {
22 const max = USERS_CONSTRAINTS_FIELDS.USERNAME.max
23 const min = USERS_CONSTRAINTS_FIELDS.USERNAME.min
24 return exists(value) && validator.matches(value, new RegExp(`^[a-z0-9._]{${min},${max}}$`))
25}
26
27function isUserDisplayNameValid (value: string) {
28 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
29}
30
31function isUserDescriptionValid (value: string) {
32 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
33}
34
35function isUserEmailVerifiedValid (value: any) {
36 return isBooleanValid(value)
37}
38
39const nsfwPolicies = values(NSFW_POLICY_TYPES)
40function isUserNSFWPolicyValid (value: any) {
41 return exists(value) && nsfwPolicies.indexOf(value) !== -1
42}
43
44function isUserWebTorrentEnabledValid (value: any) {
45 return isBooleanValid(value)
46}
47
48function isUserVideosHistoryEnabledValid (value: any) {
49 return isBooleanValid(value)
50}
51
52function isUserAutoPlayVideoValid (value: any) {
53 return isBooleanValid(value)
54}
55
56function isUserVideoLanguages (value: any) {
57 return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
58}
59
60function isUserAdminFlagsValid (value: any) {
61 return exists(value) && validator.isInt('' + value)
62}
63
64function isUserBlockedValid (value: any) {
65 return isBooleanValid(value)
66}
67
68function isUserAutoPlayNextVideoValid (value: any) {
69 return isBooleanValid(value)
70}
71
72function isUserAutoPlayNextVideoPlaylistValid (value: any) {
73 return isBooleanValid(value)
74}
75
76function isNoInstanceConfigWarningModal (value: any) {
77 return isBooleanValid(value)
78}
79
80function isNoWelcomeModal (value: any) {
81 return isBooleanValid(value)
82}
83
84function isUserBlockedReasonValid (value: any) {
85 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
86}
87
88function isUserRoleValid (value: any) {
89 return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
90}
91
92const avatarMimeTypes = CONSTRAINTS_FIELDS.ACTORS.AVATAR.EXTNAME
93 .map(v => v.replace('.', ''))
94 .join('|')
95const avatarMimeTypesRegex = `image/(${avatarMimeTypes})`
96function isAvatarFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
97 return isFileValid(files, avatarMimeTypesRegex, 'avatarfile', CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max)
98}
99
100// ---------------------------------------------------------------------------
101
102export {
103 isUserVideosHistoryEnabledValid,
104 isUserBlockedValid,
105 isUserPasswordValid,
106 isUserVideoLanguages,
107 isUserBlockedReasonValid,
108 isUserRoleValid,
109 isUserVideoQuotaValid,
110 isUserVideoQuotaDailyValid,
111 isUserUsernameValid,
112 isUserAdminFlagsValid,
113 isUserEmailVerifiedValid,
114 isUserNSFWPolicyValid,
115 isUserWebTorrentEnabledValid,
116 isUserAutoPlayVideoValid,
117 isUserAutoPlayNextVideoValid,
118 isUserAutoPlayNextVideoPlaylistValid,
119 isUserDisplayNameValid,
120 isUserDescriptionValid,
121 isNoInstanceConfigWarningModal,
122 isNoWelcomeModal,
123 isAvatarFile
124}