34 lines
1.7 KiB
TypeScript
34 lines
1.7 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { IsOptional, IsString, Length, Matches } from 'class-validator';
|
|
|
|
export class PinDto {
|
|
@ApiProperty({ description: 'PIN-код из 4-6 цифр', example: '1234' })
|
|
@IsString({ message: 'PIN-код должен быть строкой' })
|
|
@Length(4, 6, { message: 'PIN-код должен содержать от 4 до 6 символов' })
|
|
@Matches(/^\d+$/, { message: 'PIN-код должен содержать только цифры' })
|
|
pin!: string;
|
|
}
|
|
|
|
export class OptionalPinDto {
|
|
@ApiPropertyOptional({ description: 'PIN-код для подтверждения действия' })
|
|
@IsOptional()
|
|
@IsString({ message: 'PIN-код должен быть строкой' })
|
|
@Length(4, 6, { message: 'PIN-код должен содержать от 4 до 6 символов' })
|
|
@Matches(/^\d+$/, { message: 'PIN-код должен содержать только цифры' })
|
|
pin?: string;
|
|
}
|
|
|
|
export class VerifySecurityPinDto extends PinDto {
|
|
@ApiProperty({ description: 'ID сессии, которую нужно разблокировать PIN-кодом' })
|
|
@IsString({ message: 'ID сессии должен быть строкой' })
|
|
sessionId!: string;
|
|
}
|
|
|
|
export class TotpCodeDto {
|
|
@ApiProperty({ description: '6-значный код из приложения-аутентификатора', example: '123456' })
|
|
@IsString({ message: 'Код должен быть строкой' })
|
|
@Length(6, 6, { message: 'Код должен содержать 6 цифр' })
|
|
@Matches(/^\d+$/, { message: 'Код должен содержать только цифры' })
|
|
code!: string;
|
|
}
|