Skip to content

Commit d16c2c0

Browse files
author
hirsch88
committed
Add custom validator
1 parent 6b886c8 commit d16c2c0

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

src/api/requests/user/UserCreateRequest.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { IsEmail, IsNotEmpty } from 'class-validator';
1+
import { IsEmail, IsNotEmpty, Validate } from 'class-validator';
22
import { RequestBody } from '../../../core/api/RequestBody';
3+
import { EndsWithValidator } from '../../Validators/EndsWithValidator';
34

45
/**
56
* This class is used for create request. Create a new instance
@@ -20,6 +21,7 @@ export class UserCreateRequest extends RequestBody {
2021

2122
@IsNotEmpty()
2223
@IsEmail()
24+
@Validate(EndsWithValidator, ['@gmail.com', '@w3tec.ch'])
2325
public email: string;
2426

2527
public picture: string;

src/api/requests/user/UserUpdateRequest.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { IsEmail, IsNotEmpty } from 'class-validator';
1+
import { IsEmail, IsNotEmpty, Validate } from 'class-validator';
22
import { RequestBody } from '../../../core/api/RequestBody';
3+
import { EndsWithValidator } from '../../Validators/EndsWithValidator';
34

45
/**
56
* This class is used for update request. Create a new instance
@@ -19,6 +20,7 @@ export class UserUpdateRequest extends RequestBody {
1920
public lastName: string;
2021

2122
@IsEmail()
23+
@Validate(EndsWithValidator, ['@gmail.com', '@w3tec.ch'])
2224
public email: string;
2325

2426
@IsNotEmpty()
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import * as _ from 'lodash';
2+
import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
3+
4+
5+
@ValidatorConstraint({ name: 'endsWith', async: false })
6+
export class EndsWithValidator implements ValidatorConstraintInterface {
7+
8+
public validate(text: string, args: ValidationArguments): boolean {
9+
for (const ending of args.constraints) {
10+
if (_.endsWith(text, ending)) {
11+
return true;
12+
}
13+
}
14+
return false;
15+
}
16+
17+
public defaultMessage(args: ValidationArguments): string {
18+
return 'Incorrect suffix';
19+
}
20+
21+
}

0 commit comments

Comments
 (0)