]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/helpers/custom-validators/users.ts
Add banner tests
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
... / ...
CommitLineData
1import { values } from 'lodash'
2import validator from 'validator'
3import { UserRole } from '../../../shared'
4import { isEmailEnabled } from '../../initializers/config'
5import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
6import { exists, isArray, isBooleanValid } from './misc'
7
8const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS
9
10function isUserPasswordValid (value: string) {
11 return validator.isLength(value, USERS_CONSTRAINTS_FIELDS.PASSWORD)
12}
13
14function 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
21function isUserVideoQuotaValid (value: string) {
22 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
23}
24
25function isUserVideoQuotaDailyValid (value: string) {
26 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
27}
28
29function 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
35function isUserDisplayNameValid (value: string) {
36 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
37}
38
39function isUserDescriptionValid (value: string) {
40 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
41}
42
43function isUserEmailVerifiedValid (value: any) {
44 return isBooleanValid(value)
45}
46
47const nsfwPolicies = values(NSFW_POLICY_TYPES)
48function isUserNSFWPolicyValid (value: any) {
49 return exists(value) && nsfwPolicies.includes(value)
50}
51
52function isUserWebTorrentEnabledValid (value: any) {
53 return isBooleanValid(value)
54}
55
56function isUserVideosHistoryEnabledValid (value: any) {
57 return isBooleanValid(value)
58}
59
60function isUserAutoPlayVideoValid (value: any) {
61 return isBooleanValid(value)
62}
63
64function isUserVideoLanguages (value: any) {
65 return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
66}
67
68function isUserAdminFlagsValid (value: any) {
69 return exists(value) && validator.isInt('' + value)
70}
71
72function isUserBlockedValid (value: any) {
73 return isBooleanValid(value)
74}
75
76function isUserAutoPlayNextVideoValid (value: any) {
77 return isBooleanValid(value)
78}
79
80function isUserAutoPlayNextVideoPlaylistValid (value: any) {
81 return isBooleanValid(value)
82}
83
84function isNoInstanceConfigWarningModal (value: any) {
85 return isBooleanValid(value)
86}
87
88function isNoWelcomeModal (value: any) {
89 return isBooleanValid(value)
90}
91
92function isUserBlockedReasonValid (value: any) {
93 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
94}
95
96function isUserRoleValid (value: any) {
97 return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
98}
99
100// ---------------------------------------------------------------------------
101
102export {
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}