mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-25 11:14:49 +00:00
107 lines
3.0 KiB
TypeScript
107 lines
3.0 KiB
TypeScript
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,
|
|
});
|
|
}
|
|
}
|