]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/custom-validators/users.ts
Add ability to search video channels
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / users.ts
CommitLineData
fdbda9e3 1import 'express-validator'
ac81d1a0 2import * as validator from 'validator'
ee9e7b61 3import { UserRole } from '../../../shared'
0883b324 4import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers'
e6921918 5import { exists, isFileValid, isBooleanValid } 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
69818c93 18function isUserUsernameValid (value: string) {
9bd26629
C
19 const max = USERS_CONSTRAINTS_FIELDS.USERNAME.max
20 const min = USERS_CONSTRAINTS_FIELDS.USERNAME.min
563d032e 21 return exists(value) && validator.matches(value, new RegExp(`^[a-z0-9._]{${min},${max}}$`))
e4c55619
C
22}
23
ed56ad11
C
24function isUserDisplayNameValid (value: string) {
25 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.NAME))
26}
27
2422c46b
C
28function isUserDescriptionValid (value: string) {
29 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.DESCRIPTION))
30}
31
0883b324
C
32const nsfwPolicies = values(NSFW_POLICY_TYPES)
33function isUserNSFWPolicyValid (value: any) {
34 return exists(value) && nsfwPolicies.indexOf(value) !== -1
7efe153b
AL
35}
36
37function isUserAutoPlayVideoValid (value: any) {
e6921918
C
38 return isBooleanValid(value)
39}
40
41function isUserBlockedValid (value: any) {
42 return isBooleanValid(value)
7efe153b
AL
43}
44
eacb25c4
C
45function isUserBlockedReasonValid (value: any) {
46 return value === null || (exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON))
47}
48
954605a8
C
49function isUserRoleValid (value: any) {
50 return exists(value) && validator.isInt('' + value) && UserRole[value] !== undefined
51}
52
ac81d1a0
C
53const avatarMimeTypes = CONSTRAINTS_FIELDS.ACTORS.AVATAR.EXTNAME
54 .map(v => v.replace('.', ''))
55 .join('|')
56const avatarMimeTypesRegex = `image/(${avatarMimeTypes})`
c5911fd3 57function isAvatarFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) {
0c237b19 58 return isFileValid(files, avatarMimeTypesRegex, 'avatarfile', CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max)
c5911fd3
C
59}
60
e4c55619
C
61// ---------------------------------------------------------------------------
62
65fcc311 63export {
e6921918 64 isUserBlockedValid,
65fcc311 65 isUserPasswordValid,
eacb25c4 66 isUserBlockedReasonValid,
65fcc311 67 isUserRoleValid,
b0f9f39e 68 isUserVideoQuotaValid,
65fcc311 69 isUserUsernameValid,
0883b324 70 isUserNSFWPolicyValid,
c5911fd3 71 isUserAutoPlayVideoValid,
ed56ad11 72 isUserDisplayNameValid,
2422c46b 73 isUserDescriptionValid,
c5911fd3 74 isAvatarFile
65fcc311 75}