52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
|
|
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;
|
||
|
|
};
|
||
|
|
}
|