import { BadRequestException, ForbiddenException, UnauthorizedException, } from "@nestjs/common"; export enum UserAuthErrorCode { USER_NOT_FOUND = "USER_NOT_FOUND", OTP_REQUIRED = "OTP_REQUIRED", OTP_EXPIRED = "OTP_EXPIRED", OTP_INVALID = "OTP_INVALID", OTP_REQUEST_TOO_SOON = "OTP_REQUEST_TOO_SOON", LINK_NOT_FOUND = "LINK_NOT_FOUND", LINK_MOBILE_MISMATCH = "LINK_MOBILE_MISMATCH", } const messages: Record = { [UserAuthErrorCode.USER_NOT_FOUND]: "کاربر یافت نشد", [UserAuthErrorCode.OTP_REQUIRED]: "ابتدا درخواست کد یکبار مصرف دهید", [UserAuthErrorCode.OTP_EXPIRED]: "کد یکبار مصرف منقضی شده است", [UserAuthErrorCode.OTP_INVALID]: "کد یکبار مصرف نامعتبر است", [UserAuthErrorCode.OTP_REQUEST_TOO_SOON]: "لطفاً تا انقضای کد فعلی صبر کنید", [UserAuthErrorCode.LINK_NOT_FOUND]: "لینک پیامکی یافت نشد", [UserAuthErrorCode.LINK_MOBILE_MISMATCH]: "این شماره موبایل مجاز به استفاده از این لینک نیست", }; export function userAuthErrorBody(code: UserAuthErrorCode) { return { code, message: messages[code], }; } export function throwUserAuthError(code: UserAuthErrorCode): never { // if (code === UserAuthErrorCode.OTP_REQUEST_TOO_SOON) { // throw new BadRequestException(userAuthErrorBody(code)); // } if (code === UserAuthErrorCode.LINK_MOBILE_MISMATCH) { throw new ForbiddenException(userAuthErrorBody(code)); } throw new UnauthorizedException(userAuthErrorBody(code)); }