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