fix: bug in thre login process

This commit is contained in:
mahyargdz
2025-03-02 16:28:07 +03:30
parent 4d0344c376
commit 28486d64ee
21 changed files with 606 additions and 588 deletions
+41
View File
@@ -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,
});
};
}
+11 -13
View File
@@ -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 {