]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/users.ts
autoplay next video support for playlists
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
CommitLineData
ac81d1a0 1import * as validator from 'validator'
2b4dd7e2 2import { UserRole } from '../../../shared'
74dc3bca 3import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers/constants'
3caf77d3 4import { exists, isArray, isBooleanValid, isFileValid } from './misc'
0883b324 5import { values } from 'lodash'
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
b0f9f39e
C
13function isUserVideoQuotaValid (value: string) {
14 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA)
15}
16
bee0abff
FA
17function isUserVideoQuotaDailyValid (value: string) {
18 return exists(value) && validator.isInt(value + '', USERS_CONSTRAINTS_FIELDS.VIDEO_QUOTA_DAILY)
19}
20
69818c93 21function isUserUsernameValid (value: string) {
9bd26629
C
22 const max = USERS_CONSTRAINTS_FIELDS.USERNAME.max
23 const min = USERS_CONSTRAINTS_FIELDS.USERNAME.min
563d032e 24 return exists(value) && validator.matches(value, new RegExp(`^[a-z0-9._]{${min},${max}}$`))
e4c55619
C
25}
26
ed56ad11
C
27function isUserDisplayNameValid (value: string) {
28 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
29}
30
2422c46b
C
31function isUserDescriptionValid (value: string) {
32 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
33}
34
d9eaee39
JM
35function isUserEmailVerifiedValid (value: any) {
36 return isBooleanValid(value)
37}
38
0883b324
C
39const nsfwPolicies = values(NSFW_POLICY_TYPES)
40function isUserNSFWPolicyValid (value: any) {
41 return exists(value) && nsfwPolicies.indexOf(value) !== -1
7efe153b
AL
42}
43
ed638e53
RK
44function isUserWebTorrentEnabledValid (value: any) {
45 return isBooleanValid(value)
64cc5e85
RK
46}
47
8b9a525a
C
48function isUserVideosHistoryEnabledValid (value: any) {
49 return isBooleanValid(value)
50}
51
7efe153b 52function isUserAutoPlayVideoValid (value: any) {
e6921918
C
53 return isBooleanValid(value)
54}
55
3caf77d3
C
56function isUserVideoLanguages (value: any) {
57 return value === null || (isArray(value) && value.length < CONSTRAINTS_FIELDS.USERS.VIDEO_LANGUAGES.max)
58}
59
1eddc9a7
C
60function isUserAdminFlagsValid (value: any) {
61 return exists(value) && validator.isInt('' + value)
62}
63
e6921918
C
64function isUserBlockedValid (value: any) {
65 return isBooleanValid(value)
7efe153b
AL
66}
67
6aa54148
L
68function isUserAutoPlayNextVideoValid (value: any) {
69 return isBooleanValid(value)
70}
71
bee29df8
RK
72function isUserAutoPlayNextVideoPlaylistValid (value: any) {
73 return isBooleanValid(value)
74}
75
43d0ea7f
C
76function isNoInstanceConfigWarningModal (value: any) {
77 return isBooleanValid(value)
78}
79
80function isNoWelcomeModal (value: any) {
81 return isBooleanValid(value)
82}
83
eacb25c4
C
84function isUserBlockedReasonValid (value: any) {
85 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
86}
87
954605a8
C
88function isUserRoleValid (value: any) {
89 return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
90}
91
ac81d1a0
C
92const avatarMimeTypes = CONSTRAINTS_FIELDS.ACTORS.AVATAR.EXTNAME
93 .map(v => v.replace('.', ''))
94 .join('|')
95const avatarMimeTypesRegex = `image/(${avatarMimeTypes})`
c5911fd3 96function isAvatarFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
0c237b19 97 return isFileValid(files, avatarMimeTypesRegex, 'avatarfile', CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max)
c5911fd3
C
98}
99
e4c55619
C
100// ---------------------------------------------------------------------------
101
65fcc311 102export {
8b9a525a 103 isUserVideosHistoryEnabledValid,
e6921918 104 isUserBlockedValid,
65fcc311 105 isUserPasswordValid,
3caf77d3 106 isUserVideoLanguages,
eacb25c4 107 isUserBlockedReasonValid,
65fcc311 108 isUserRoleValid,
b0f9f39e 109 isUserVideoQuotaValid,
bee0abff 110 isUserVideoQuotaDailyValid,
65fcc311 111 isUserUsernameValid,
1eddc9a7 112 isUserAdminFlagsValid,
d9eaee39 113 isUserEmailVerifiedValid,
0883b324 114 isUserNSFWPolicyValid,
ed638e53 115 isUserWebTorrentEnabledValid,
c5911fd3 116 isUserAutoPlayVideoValid,
6aa54148 117 isUserAutoPlayNextVideoValid,
bee29df8 118 isUserAutoPlayNextVideoPlaylistValid,
ed56ad11 119 isUserDisplayNameValid,
2422c46b 120 isUserDescriptionValid,
43d0ea7f
C
121 isNoInstanceConfigWarningModal,
122 isNoWelcomeModal,
c5911fd3 123 isAvatarFile
65fcc311 124}