Files
IdP/apps/api-gateway/src/dto/security.dto.ts
2026-06-24 20:15:19 +03:00

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;
}