]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/helpers/custom-validators/users.ts
Translated using Weblate (Japanese)
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
... / ...
CommitLineData
1import validator from 'validator'
2import { UserRole } from '@shared/models'
3import { isEmailEnabled } from '../../initializers/config'
4import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
5import { exists, isArray, isBooleanValid } from './misc'
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 isUserPasswordValidOrEmpty (value: string) {
14 // Empty password is only possible if emailing is enabled.
15 if (value === '') return isEmailEnabled()
16
17 return isUserPasswordValid(value)
18}
19
20function isUserVideoQuotaValid (value: string) {
21 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
22}
23
24function isUserVideoQuotaDailyValid (value: string) {
25 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
26}
27
28function isUserUsernameValid (value: string) {
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)
32}
33
34function isUserDisplayNameValid (value: string) {
35 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
36}
37
38function isUserDescriptionValid (value: string) {
39 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
40}
41
42function isUserEmailVerifiedValid (value: any) {
43 return isBooleanValid(value)
44}
45
46const nsfwPolicies = new Set(Object.values(NSFW_POLICY_TYPES))
47function isUserNSFWPolicyValid (value: any) {
48 return exists(value) && nsfwPolicies.has(value)
49}
50
51function isUserP2PEnabledValid (value: any) {
52 return isBooleanValid(value)
53}
54
55function isUserVideosHistoryEnabledValid (value: any) {
56 return isBooleanValid(value)
57}
58
59function isUserAutoPlayVideoValid (value: any) {
60 return isBooleanValid(value)
61}
62
63function isUserVideoLanguages (value: any) {
64 return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
65}
66
67function isUserAdminFlagsValid (value: any) {
68 return exists(value) && validator.isInt('' + value)
69}
70
71function isUserBlockedValid (value: any) {
72 return isBooleanValid(value)
73}
74
75function isUserAutoPlayNextVideoValid (value: any) {
76 return isBooleanValid(value)
77}
78
79function isUserAutoPlayNextVideoPlaylistValid (value: any) {
80 return isBooleanValid(value)
81}
82
83function isUserNoModal (value: any) {
84 return isBooleanValid(value)
85}
86
87function isUserBlockedReasonValid (value: any) {
88 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
89}
90
91function isUserRoleValid (value: any) {
92 return exists(value) && validator.isInt('' + value) && [ UserRole.ADMINISTRATOR, UserRole.MODERATOR, UserRole.USER ].includes(value)
93}
94
95// ---------------------------------------------------------------------------
96
97export {
98 isUserVideosHistoryEnabledValid,
99 isUserBlockedValid,
100 isUserPasswordValid,
101 isUserPasswordValidOrEmpty,
102 isUserVideoLanguages,
103 isUserBlockedReasonValid,
104 isUserRoleValid,
105 isUserVideoQuotaValid,
106 isUserVideoQuotaDailyValid,
107 isUserUsernameValid,
108 isUserAdminFlagsValid,
109 isUserEmailVerifiedValid,
110 isUserNSFWPolicyValid,
111 isUserP2PEnabledValid,
112 isUserAutoPlayVideoValid,
113 isUserAutoPlayNextVideoValid,
114 isUserAutoPlayNextVideoPlaylistValid,
115 isUserDisplayNameValid,
116 isUserDescriptionValid,
117 isUserNoModal
118}