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