깜놀하는 해므찌로

Nestjs 비밀번호 / 비밀번호 확인과 같이 클래스 내 다른 property와 일치한 지 검증하고 싶을 때 본문

IT

Nestjs 비밀번호 / 비밀번호 확인과 같이 클래스 내 다른 property와 일치한 지 검증하고 싶을 때

agnusdei1207 2023. 8. 13. 11:20
반응형
SMALL
import {registerDecorator, ValidationArguments, ValidationOptions} from 'class-validator';

export function IsEqual(property: string, validationOptions: ValidationOptions) {
    return function (object: object, propertyName: string) {
        registerDecorator({
            name: 'isEqual',
            target: object.constructor,
            propertyName,
            constraints: [property],
            options: validationOptions,
            validator: {
                validate(value: any, args: ValidationArguments) {
                    const [relatedPropertyName] = args.constraints;
                    const relatedValue = (args.object as any)[relatedPropertyName];
                    return value === relatedValue;
                },
            },
        })
    }
}

 

 

export class RegisterUserDTO {
    @ApiProperty()
    @IsNotEmpty({message: '이메일을 입력해 주세요.'})
    @IsEmail({}, {message: '이메일 형식이 올바르지 않습니다.'})
    email: string;

    @ApiProperty()
    @IsNotEmpty({message: '비밀번호를 입력해 주세요.'})
    password: string;
    
    @ApiProperty()
    @IsNotEmpty({message: '비밀번호를 다시 한 번 입력해 주세요.'})
    @IsEqual('password', {message: '비밀번호가 일치하지 않습니다.'})
    passwordConfirm: string;
}
반응형
LIST