import { HttpStatus, HttpException } from '@nestjs/common'; import ErrorCodes from './errorCodes'; function Builder({ statusCode, message, error, code }) { return new HttpException({ statusCode, message, error, code }, statusCode); } export default function ErrorBuilder(code: string) { console.log(code); switch (code) { case ErrorCodes.AUTH.WRONG_CREDENTIALS: return Builder({ statusCode: HttpStatus.UNAUTHORIZED, error: 'Não autenticado', message: 'Usuário ou senha incorretos', code, }); case ErrorCodes.AUTH.WRONG_PASSWORD_CONFIRMATION: return Builder({ statusCode: HttpStatus.UNAUTHORIZED, error: 'Senha incorreta', message: 'Confirmação de senha incorreta', code, }); case ErrorCodes.AUTH.TOTP_NOT_ENABLED: return Builder({ statusCode: HttpStatus.PRECONDITION_FAILED, error: 'Não permitido', message: 'A autenticação multifator não está habilitada', code, }); case ErrorCodes.AUTH.TOTP_ALREADY_ENABLED: return Builder({ statusCode: HttpStatus.PRECONDITION_FAILED, error: 'Não permitido', message: 'A autenticação multifator já está habilitada', code, }); case ErrorCodes.AUTH.TOTP_ALREADY_DISABLED: return Builder({ statusCode: HttpStatus.PRECONDITION_FAILED, error: 'Não permitido', message: 'A autenticação multifator já está desabilitada', code, }); case ErrorCodes.AUTH.TOTP_REQUIRED: return Builder({ statusCode: HttpStatus.UNAUTHORIZED, error: 'Não autenticado', message: 'Informe o token de autenticação multifator', code, }); case ErrorCodes.AUTH.CODE_MISMATCH: case ErrorCodes.AUTH.CODE_ALREADY_USED: return Builder({ statusCode: HttpStatus.UNAUTHORIZED, error: 'Não autenticado', message: 'Token de autenticação multifator inválido', code, }); case ErrorCodes.RATE_LIMIT: return Builder({ statusCode: HttpStatus.TOO_MANY_REQUESTS, error: 'Limite excedido', message: 'Você tentou realizar essa operação muitas vezes. Tente novamente mais tarde', code, }); case ErrorCodes.AUTH.UNAUTHORIZED: return Builder({ statusCode: HttpStatus.UNAUTHORIZED, error: 'Não autenticado', message: 'É necessário estar logado para realizar essa operação', code, }); case ErrorCodes.AUTH.FORBIDDEN: return Builder({ statusCode: HttpStatus.FORBIDDEN, error: 'Não autorizado', message: 'Você não tem permissões suficientes para realizar essa operação', code, }); case ErrorCodes.UNKNOWN: default: return Builder({ statusCode: HttpStatus.INTERNAL_SERVER_ERROR, error: 'Desconhecido', message: 'Erro desconhecido. Tente novamente ou entre em contato com o suporte', code: ErrorCodes.UNKNOWN, }); } }