import { ApiProperty } from '@nestjs/swagger'; import { IsOptional, IsNumber, IsString } from 'class-validator'; export class LoginConfigDto { @ApiProperty({ description: '是否启用验证码', required: false }) @IsOptional() @IsNumber() isCaptcha?: number; @ApiProperty({ description: '是否启用站点验证码', required: false }) @IsOptional() @IsNumber() isSiteCaptcha?: number; @ApiProperty({ description: '登录背景图', required: false }) @IsOptional() @IsString() bg?: string; @ApiProperty({ description: '站点登录背景图', required: false }) @IsOptional() @IsString() siteBg?: string; @ApiProperty({ description: '登录方式配置', required: false }) @IsOptional() loginMethods?: { username?: boolean; email?: boolean; mobile?: boolean; wechat?: boolean; qq?: boolean; }; @ApiProperty({ description: '密码策略配置', required: false }) @IsOptional() passwordPolicy?: { minLength?: number; requireSpecialChar?: boolean; requireNumber?: boolean; requireUppercase?: boolean; }; @ApiProperty({ description: '登录失败限制', required: false }) @IsOptional() loginLimit?: { maxAttempts?: number; lockoutDuration?: number; lockoutType?: string; }; }