]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/users.ts
Add list of instance follows in about page
[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'
2b4dd7e2 5import { exists, 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
1eddc9a7
C
57function isUserAdminFlagsValid (value: any) {
58 return exists(value) && validator.isInt('' + value)
59}
60
e6921918
C
61function isUserBlockedValid (value: any) {
62 return isBooleanValid(value)
7efe153b
AL
63}
64
eacb25c4
C
65function isUserBlockedReasonValid (value: any) {
66 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
67}
68
954605a8
C
69function isUserRoleValid (value: any) {
70 return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
71}
72
ac81d1a0
C
73const avatarMimeTypes = CONSTRAINTS_FIELDS.ACTORS.AVATAR.EXTNAME
74 .map(v => v.replace('.', ''))
75 .join('|')
76const avatarMimeTypesRegex = `image/(${avatarMimeTypes})`
c5911fd3 77function isAvatarFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
0c237b19 78 return isFileValid(files, avatarMimeTypesRegex, 'avatarfile', CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max)
c5911fd3
C
79}
80
e4c55619
C
81// ---------------------------------------------------------------------------
82
65fcc311 83export {
8b9a525a 84 isUserVideosHistoryEnabledValid,
e6921918 85 isUserBlockedValid,
65fcc311 86 isUserPasswordValid,
eacb25c4 87 isUserBlockedReasonValid,
65fcc311 88 isUserRoleValid,
b0f9f39e 89 isUserVideoQuotaValid,
bee0abff 90 isUserVideoQuotaDailyValid,
65fcc311 91 isUserUsernameValid,
1eddc9a7 92 isUserAdminFlagsValid,
d9eaee39 93 isUserEmailVerifiedValid,
0883b324 94 isUserNSFWPolicyValid,
ed638e53 95 isUserWebTorrentEnabledValid,
c5911fd3 96 isUserAutoPlayVideoValid,
ed56ad11 97 isUserDisplayNameValid,
2422c46b 98 isUserDescriptionValid,
c5911fd3 99 isAvatarFile
65fcc311 100}