]>
Commit | Line | Data |
---|---|---|
7cde3b9c | 1 | import validator from 'validator' |
d17c7b4e | 2 | import { UserRole } from '@shared/models' |
2cb03dc1 | 3 | import { isEmailEnabled } from '../../initializers/config' |
74dc3bca | 4 | import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants' |
213e30ef | 5 | import { exists, isArray, isBooleanValid } from './misc' |
ee9e7b61 | 6 | |
65fcc311 | 7 | const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS |
e4c55619 | 8 | |
69818c93 | 9 | function isUserPasswordValid (value: string) { |
9bd26629 C |
10 | return validator.isLength(value, USERS_CONSTRAINTS_FIELDS.PASSWORD) |
11 | } | |
12 | ||
45f1bd72 JL |
13 | function isUserPasswordValidOrEmpty (value: string) { |
14 | // Empty password is only possible if emailing is enabled. | |
4c1c1709 C |
15 | if (value === '') return isEmailEnabled() |
16 | ||
45f1bd72 JL |
17 | return isUserPasswordValid(value) |
18 | } | |
19 | ||
b0f9f39e C |
20 | function isUserVideoQuotaValid (value: string) { |
21 | return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA) | |
22 | } | |
23 | ||
bee0abff FA |
24 | function isUserVideoQuotaDailyValid (value: string) { |
25 | return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY) | |
26 | } | |
27 | ||
69818c93 | 28 | function isUserUsernameValid (value: string) { |
35a0a924 C |
29 | return exists(value) && |
30 | validator.matches(value, new RegExp(`^[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?$`)) && | |
31 | validator.isLength(value, USERS_CONSTRAINTS_FIELDS.USERNAME) | |
e4c55619 C |
32 | } |
33 | ||
ed56ad11 C |
34 | function isUserDisplayNameValid (value: string) { |
35 | return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME)) | |
36 | } | |
37 | ||
2422c46b C |
38 | function isUserDescriptionValid (value: string) { |
39 | return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION)) | |
40 | } | |
41 | ||
d9eaee39 JM |
42 | function isUserEmailVerifiedValid (value: any) { |
43 | return isBooleanValid(value) | |
44 | } | |
45 | ||
690bb8f9 | 46 | const nsfwPolicies = new Set(Object.values(NSFW_POLICY_TYPES)) |
0883b324 | 47 | function isUserNSFWPolicyValid (value: any) { |
690bb8f9 | 48 | return exists(value) && nsfwPolicies.has(value) |
7efe153b AL |
49 | } |
50 | ||
a9bfa85d | 51 | function isUserP2PEnabledValid (value: any) { |
ed638e53 | 52 | return isBooleanValid(value) |
64cc5e85 RK |
53 | } |
54 | ||
8b9a525a C |
55 | function isUserVideosHistoryEnabledValid (value: any) { |
56 | return isBooleanValid(value) | |
57 | } | |
58 | ||
7efe153b | 59 | function isUserAutoPlayVideoValid (value: any) { |
e6921918 C |
60 | return isBooleanValid(value) |
61 | } | |
62 | ||
3caf77d3 C |
63 | function isUserVideoLanguages (value: any) { |
64 | return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max) | |
65 | } | |
66 | ||
1eddc9a7 C |
67 | function isUserAdminFlagsValid (value: any) { |
68 | return exists(value) && validator.isInt('' + value) | |
69 | } | |
70 | ||
e6921918 C |
71 | function isUserBlockedValid (value: any) { |
72 | return isBooleanValid(value) | |
7efe153b AL |
73 | } |
74 | ||
6aa54148 L |
75 | function isUserAutoPlayNextVideoValid (value: any) { |
76 | return isBooleanValid(value) | |
77 | } | |
78 | ||
bee29df8 RK |
79 | function isUserAutoPlayNextVideoPlaylistValid (value: any) { |
80 | return isBooleanValid(value) | |
81 | } | |
82 | ||
8f581725 | 83 | function isUserNoModal (value: any) { |
43d0ea7f C |
84 | return isBooleanValid(value) |
85 | } | |
86 | ||
eacb25c4 C |
87 | function isUserBlockedReasonValid (value: any) { |
88 | return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON)) | |
89 | } | |
90 | ||
954605a8 | 91 | function isUserRoleValid (value: any) { |
fba87e27 | 92 | return exists(value) && validator.isInt('' + value) && [ UserRole.ADMINISTRATOR, UserRole.MODERATOR, UserRole.USER ].includes(value) |
954605a8 C |
93 | } |
94 | ||
e4c55619 C |
95 | // --------------------------------------------------------------------------- |
96 | ||
65fcc311 | 97 | export { |
8b9a525a | 98 | isUserVideosHistoryEnabledValid, |
e6921918 | 99 | isUserBlockedValid, |
65fcc311 | 100 | isUserPasswordValid, |
45f1bd72 | 101 | isUserPasswordValidOrEmpty, |
3caf77d3 | 102 | isUserVideoLanguages, |
eacb25c4 | 103 | isUserBlockedReasonValid, |
65fcc311 | 104 | isUserRoleValid, |
b0f9f39e | 105 | isUserVideoQuotaValid, |
bee0abff | 106 | isUserVideoQuotaDailyValid, |
65fcc311 | 107 | isUserUsernameValid, |
1eddc9a7 | 108 | isUserAdminFlagsValid, |
d9eaee39 | 109 | isUserEmailVerifiedValid, |
0883b324 | 110 | isUserNSFWPolicyValid, |
a9bfa85d | 111 | isUserP2PEnabledValid, |
c5911fd3 | 112 | isUserAutoPlayVideoValid, |
6aa54148 | 113 | isUserAutoPlayNextVideoValid, |
bee29df8 | 114 | isUserAutoPlayNextVideoPlaylistValid, |
ed56ad11 | 115 | isUserDisplayNameValid, |
2422c46b | 116 | isUserDescriptionValid, |
8f581725 | 117 | isUserNoModal |
65fcc311 | 118 | } |