Skip to content

ClassValidator

Cláudio Medeiros edited this page Oct 5, 2022 · 1 revision

Criar validação customizada

Adiciona os decorators ao class-validator.

Crie um arquivo iscpf.decorator.ts e adicione em seu diretório de validadores, exemplo: src/validators/iscpf.decorator.ts ou em qualquer outro diretório a seu critério.

// src/validators/iscpf.decorator.ts
import {
  registerDecorator,
  ValidationOptions,
  ValidatorConstraint,
  ValidatorConstraintInterface,
  ValidationArguments,
} from 'class-validator'

// Importa o isCPF do validation-br
import { isCPF } from 'validation-br'

@ValidatorConstraint({ async: false })
export class IsCpfConstraint implements ValidatorConstraintInterface {
  validate(cpf: any, args: ValidationArguments) {
    return isCPF(cpf)
  }
  defaultMessage() {
    return 'CPF inválido'
  }
}

// Registra o decorator
export function IsCpf(validationOptions?: ValidationOptions) {
  return function (object: any, propertyName: string) {
    registerDecorator({
      target: object.constructor,
      propertyName: propertyName,
      options: validationOptions,
      constraints: [],
      validator: IsCpfConstraint,
    })
  }
}

Como usar

Forma de uso no DTO

import { IsCpf } from '../../validators/iscpf.decorator'

export class CreateUserDto {
  @IsString()
  @IsNotEmpty()
  @IsCpf()
  cpf: string
}

Saiba mais

Clone this wiki locally