fix: bug in thre login process
This commit is contained in:
+41
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
ValidationArguments,
|
||||
ValidationOptions,
|
||||
ValidatorConstraint,
|
||||
ValidatorConstraintInterface,
|
||||
registerDecorator,
|
||||
} from "class-validator";
|
||||
|
||||
export function isValidIranianNationalCode(nationalCode: string): boolean {
|
||||
if (!/^\d{10}$/.test(nationalCode)) return false;
|
||||
|
||||
const digits = nationalCode.split("").map(Number);
|
||||
const controlDigit = digits[9];
|
||||
const sum = digits.slice(0, 9).reduce((acc, digit, index) => acc + digit * (10 - index), 0);
|
||||
const remainder = sum % 11;
|
||||
|
||||
return (remainder < 2 && controlDigit === remainder) || (remainder >= 2 && controlDigit === 11 - remainder);
|
||||
}
|
||||
|
||||
@ValidatorConstraint({ async: false })
|
||||
export class IsNationalCodeConstraint implements ValidatorConstraintInterface {
|
||||
validate(value: unknown, _args: ValidationArguments) {
|
||||
return typeof value === "string" && isValidIranianNationalCode(value);
|
||||
}
|
||||
|
||||
defaultMessage(_args: ValidationArguments) {
|
||||
return `Invalid Iranian national code :${_args.value}`;
|
||||
}
|
||||
}
|
||||
|
||||
export function IsNationalCode(validationOptions?: ValidationOptions) {
|
||||
return function (object: object, propertyName: string) {
|
||||
registerDecorator({
|
||||
target: object.constructor,
|
||||
propertyName: propertyName,
|
||||
options: validationOptions,
|
||||
constraints: [],
|
||||
validator: IsNationalCodeConstraint,
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -55,6 +55,7 @@ export const enum AuthMessage {
|
||||
PHONE_SHOULD_BE_11_DIGIT = "شماره تلفن باید ۱۱ رقم باشد",
|
||||
TIMESTAMP_NOT_EMPTY = "زمان نمیتواند خالی باشد",
|
||||
ADMIN_CAN_NOT_LOGIN = "ادمین نمیتواند وارد شود",
|
||||
NATIONAL_CODE_INVALID = "کد ملی نامعتبر است",
|
||||
}
|
||||
|
||||
export const enum UserMessage {
|
||||
@@ -472,21 +473,18 @@ export const enum EmailMessage {
|
||||
}
|
||||
|
||||
export const enum FinancialMessage {
|
||||
GENDER_TYPE_INVALID = "نوع جنسیت باید یکی از مقادیر FEMALE یا MALE باشد",
|
||||
ECONOMIC_CODE_INVALID = "کد اقتصادی باید یک رشته باشد",
|
||||
GENDER_TYPE_REQUIRED = "نوع جنسیت مورد نیاز است",
|
||||
FATHER_NAME_REQUIRED = "نام پدر مورد نیاز است",
|
||||
FATHER_NAME_INVALID = "نام پدر باید یک رشته باشد",
|
||||
NATIONALITY_INVALID = "ملیت باید یک رشته باشد",
|
||||
REGISTRATION_ID_INVALID = "شناسه ثبت باید یک رشته باشد",
|
||||
ADDRESS_ID_INVALID = "ادرس باید یک رشته باشد",
|
||||
POSTALCODE_INVALID = "کد پستی باید یک رشته باشد",
|
||||
NATIONAL_ID_INVALID = "شناسه ملی باید یک رشته باشد",
|
||||
FIXED_PHONE_INVALID = "شماره تماس ثابت باید یک رشته باشد",
|
||||
USER_ID_REQUIRED = "شناسه کاربر مورد نیاز است",
|
||||
NATIONALITY_REQUIRED = "ملیت مورد نیاز است",
|
||||
ADDRESS_REQUIRED = "آدرس مورد نیاز است",
|
||||
ADDRESS_ID_INVALID = "شناسه آدرس باید یک UUID معتبر باشد",
|
||||
POSTAL_CODE_REQUIRED = "کد پستی مورد نیاز است",
|
||||
CITY_ID_REQUIRED = "شناسه شهر مورد نیاز است",
|
||||
USER_ID_SHOULD_BE_A_UUID = "شناسه کاربر باید یک UUID معتبر باشد",
|
||||
FINANCIAL_INFO_ALREADY_EXISTS = "دیتا اطلاعات مالی وجود دارد",
|
||||
FINANCIAL_INFO_NOT_FOUND = "دیتا اطلاعات مالی یافت نشد",
|
||||
SEARCH_QUERY_MUST_BE_A_STRING = "رشته جستجو باید یک رشته باشد",
|
||||
CITY_ID_INVALID = "شناسه شهر باید یک عددی باشد",
|
||||
BIRTH_DATE_REQUIRED = "تاریخ تولد مورد نیاز است",
|
||||
ADDRESS_STRING = "آدرس باید یک رشته باشد",
|
||||
POSTAL_CODE_NUMBER_STRING = "کد پستی باید یک رشته عددی باشد",
|
||||
}
|
||||
|
||||
export const enum AdminMessage {
|
||||
|
||||
Reference in New Issue
Block a user