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