Files
CRM_Montzar/apps/api/src/auth/dto.ts
T
2026-09-15 14:10:52 +03:30

110 lines
1.8 KiB
TypeScript

import {
IsEmail,
IsIn,
IsOptional,
IsString,
Matches,
MinLength,
ValidateIf,
} from 'class-validator';
import { BUSINESS_FIELDS } from '@mento/shared';
export class LoginDto {
@IsOptional()
@IsString()
@MinLength(3)
identifier?: string;
@IsOptional()
@IsEmail()
email?: string;
@IsString()
@MinLength(6)
password!: string;
}
export class LoginOtpRequestDto {
@IsString()
@Matches(/^09\d{9}$|^\+98\d{10}$|^98\d{10}$|^9\d{9}$/, {
message: 'شماره موبایل معتبر نیست',
})
mobile!: string;
}
export class LoginOtpVerifyDto {
@IsString()
challengeId!: string;
@IsString()
@MinLength(4)
code!: string;
}
export class RegisterOrganizationDto {
@IsString()
@MinLength(2)
organizationName!: string;
@IsString()
@MinLength(2)
fullName!: string;
@IsEmail()
email!: string;
@IsString()
@Matches(/^09\d{9}$|^\+98\d{10}$|^98\d{10}$|^9\d{9}$/, {
message: 'شماره موبایل معتبر نیست',
})
mobile!: string;
@IsString()
@MinLength(6)
password!: string;
@IsString()
@MinLength(6)
passwordConfirm!: string;
@IsIn([...BUSINESS_FIELDS])
businessField!: (typeof BUSINESS_FIELDS)[number];
@IsOptional()
@IsString()
referralCode?: string;
@ValidateIf((_, v) => v !== undefined)
@IsOptional()
acceptedTerms?: boolean;
}
export class RegisterVerifyOtpDto {
@IsString()
challengeId!: string;
@IsOptional()
@IsString()
@MinLength(4)
emailCode?: string;
@IsString()
@MinLength(4)
mobileCode!: string;
}
export class UpdateProfileDto {
@IsString()
@MinLength(2)
fullName!: string;
@IsEmail()
email!: string;
@IsString()
@Matches(/^09\d{9}$|^\+98\d{10}$|^98\d{10}$|^9\d{9}$/, {
message: 'شماره موبایل معتبر نیست',
})
mobile!: string;
}