]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/users.ts
Translated using Weblate (Japanese)
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
CommitLineData
7cde3b9c 1import validator from 'validator'
d17c7b4e 2import { UserRole } from '@shared/models'
2cb03dc1 3import { isEmailEnabled } from '../../initializers/config'
74dc3bca 4import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
213e30ef 5import { exists, isArray, isBooleanValid } from './misc'
ee9e7b61 6
65fcc311 7const USERS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.USERS
e4c55619 8
69818c93 9function isUserPasswordValid (value: string) {
9bd26629
C
10 return validator.isLength(value, USERS_CONSTRAINTS_FIELDS.PASSWORD)
11}
12
45f1bd72
JL
13function 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
20function isUserVideoQuotaValid (value: string) {
21 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
22}
23
bee0abff
FA
24function isUserVideoQuotaDailyValid (value: string) {
25 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
26}
27
69818c93 28function 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
34function isUserDisplayNameValid (value: string) {
35 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
36}
37
2422c46b
C
38function isUserDescriptionValid (value: string) {
39 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
40}
41
d9eaee39
JM
42function isUserEmailVerifiedValid (value: any) {
43 return isBooleanValid(value)
44}
45
690bb8f9 46const nsfwPolicies = new Set(Object.values(NSFW_POLICY_TYPES))
0883b324 47function isUserNSFWPolicyValid (value: any) {
690bb8f9 48 return exists(value) && nsfwPolicies.has(value)
7efe153b
AL
49}
50
a9bfa85d 51function isUserP2PEnabledValid (value: any) {
ed638e53 52 return isBooleanValid(value)
64cc5e85
RK
53}
54
8b9a525a
C
55function isUserVideosHistoryEnabledValid (value: any) {
56 return isBooleanValid(value)
57}
58
7efe153b 59function isUserAutoPlayVideoValid (value: any) {
e6921918
C
60 return isBooleanValid(value)
61}
62
3caf77d3
C
63function isUserVideoLanguages (value: any) {
64 return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
65}
66
1eddc9a7
C
67function isUserAdminFlagsValid (value: any) {
68 return exists(value) && validator.isInt('' + value)
69}
70
e6921918
C
71function isUserBlockedValid (value: any) {
72 return isBooleanValid(value)
7efe153b
AL
73}
74
6aa54148
L
75function isUserAutoPlayNextVideoValid (value: any) {
76 return isBooleanValid(value)
77}
78
bee29df8
RK
79function isUserAutoPlayNextVideoPlaylistValid (value: any) {
80 return isBooleanValid(value)
81}
82
8f581725 83function isUserNoModal (value: any) {
43d0ea7f
C
84 return isBooleanValid(value)
85}
86
eacb25c4
C
87function isUserBlockedReasonValid (value: any) {
88 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
89}
90
954605a8 91function 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 97export {
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}