1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
import { I18n } from '@ngx-translate/i18n-polyfill'
import { Validators } from '@angular/forms'
import { BuildFormValidator } from '@app/shared'
import { Injectable } from '@angular/core'
@Injectable()
export class UserValidatorsService {
readonly USER_USERNAME: BuildFormValidator
readonly USER_EMAIL: BuildFormValidator
readonly USER_PASSWORD: BuildFormValidator
readonly USER_CONFIRM_PASSWORD: BuildFormValidator
readonly USER_VIDEO_QUOTA: BuildFormValidator
readonly USER_VIDEO_QUOTA_DAILY: BuildFormValidator
readonly USER_ROLE: BuildFormValidator
readonly USER_DISPLAY_NAME: BuildFormValidator
readonly USER_DESCRIPTION: BuildFormValidator
readonly USER_TERMS: BuildFormValidator
readonly USER_BAN_REASON: BuildFormValidator
constructor (private i18n: I18n) {
this.USER_USERNAME = {
VALIDATORS: [
Validators.required,
Validators.minLength(3),
Validators.maxLength(20),
Validators.pattern(/^[a-z0-9._]+$/)
],
MESSAGES: {
'required': this.i18n('Username is required.'),
'minlength': this.i18n('Username must be at least 3 characters long.'),
'maxlength': this.i18n('Username cannot be more than 20 characters long.'),
'pattern': this.i18n('Username should be only lowercase alphanumeric characters.')
}
}
this.USER_EMAIL = {
VALIDATORS: [ Validators.required, Validators.email ],
MESSAGES: {
'required': this.i18n('Email is required.'),
'email': this.i18n('Email must be valid.')
}
}
this.USER_PASSWORD = {
VALIDATORS: [
Validators.required,
Validators.minLength(6),
Validators.maxLength(255)
],
MESSAGES: {
'required': this.i18n('Password is required.'),
'minlength': this.i18n('Password must be at least 6 characters long.'),
'maxlength': this.i18n('Password cannot be more than 255 characters long.')
}
}
this.USER_CONFIRM_PASSWORD = {
VALIDATORS: [],
MESSAGES: {
'matchPassword': this.i18n('The new password and the confirmed password do not correspond.')
}
}
this.USER_VIDEO_QUOTA = {
VALIDATORS: [ Validators.required, Validators.min(-1) ],
MESSAGES: {
'required': this.i18n('Video quota is required.'),
'min': this.i18n('Quota must be greater than -1.')
}
}
this.USER_VIDEO_QUOTA_DAILY = {
VALIDATORS: [ Validators.required, Validators.min(-1) ],
MESSAGES: {
'required': this.i18n('Daily upload limit is required.'),
'min': this.i18n('Daily upload limit must be greater than -1.')
}
}
this.USER_ROLE = {
VALIDATORS: [ Validators.required ],
MESSAGES: {
'required': this.i18n('User role is required.')
}
}
this.USER_DISPLAY_NAME = {
VALIDATORS: [
Validators.required,
Validators.minLength(3),
Validators.maxLength(120)
],
MESSAGES: {
'required': this.i18n('Display name is required.'),
'minlength': this.i18n('Display name must be at least 3 characters long.'),
'maxlength': this.i18n('Display name cannot be more than 120 characters long.')
}
}
this.USER_DESCRIPTION = {
VALIDATORS: [
Validators.minLength(3),
Validators.maxLength(1000)
],
MESSAGES: {
'minlength': this.i18n('Description must be at least 3 characters long.'),
'maxlength': this.i18n('Description cannot be more than 1000 characters long.')
}
}
this.USER_TERMS = {
VALIDATORS: [
Validators.requiredTrue
],
MESSAGES: {
'required': this.i18n('You must to agree with the instance terms in order to registering on it.')
}
}
this.USER_BAN_REASON = {
VALIDATORS: [
Validators.minLength(3),
Validators.maxLength(250)
],
MESSAGES: {
'minlength': this.i18n('Ban reason must be at least 3 characters long.'),
'maxlength': this.i18n('Ban reason cannot be more than 250 characters long.')
}
}
}
}
|