72 lines
2.9 KiB
TypeScript
72 lines
2.9 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { IsBoolean, IsEmail, IsEnum, IsOptional, IsString, Matches, MinLength } from 'class-validator';
|
|
|
|
export enum GatewayUserStatus {
|
|
ACTIVE = 'ACTIVE',
|
|
SUSPENDED = 'SUSPENDED',
|
|
DELETED = 'DELETED'
|
|
}
|
|
|
|
export class ListUsersQueryDto {
|
|
@ApiPropertyOptional({ description: 'Поиск по почте, телефону, имени или логину' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Поисковая строка должна быть текстом' })
|
|
search?: string;
|
|
}
|
|
|
|
export class UpdateUserDto {
|
|
@ApiPropertyOptional({ description: 'Отображаемое имя' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Имя должно быть строкой' })
|
|
displayName?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Основная почта' })
|
|
@IsOptional()
|
|
@IsEmail({}, { message: 'Укажите корректную почту' })
|
|
email?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Основной телефон' })
|
|
@IsOptional()
|
|
@Matches(/^\+?[1-9]\d{7,14}$/, { message: 'Укажите корректный телефон' })
|
|
phone?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Резервная почта' })
|
|
@IsOptional()
|
|
@IsEmail({}, { message: 'Укажите корректную резервную почту' })
|
|
backupEmail?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Резервный телефон' })
|
|
@IsOptional()
|
|
@Matches(/^\+?[1-9]\d{7,14}$/, { message: 'Укажите корректный резервный телефон' })
|
|
backupPhone?: string;
|
|
|
|
@ApiPropertyOptional({ description: 'Статус пользователя', enum: GatewayUserStatus })
|
|
@IsOptional()
|
|
@IsEnum(GatewayUserStatus, { message: 'Укажите корректный статус пользователя' })
|
|
status?: GatewayUserStatus;
|
|
}
|
|
|
|
export class ResetPasswordDto {
|
|
@ApiProperty({ description: 'Новый пароль пользователя', minLength: 8 })
|
|
@IsString({ message: 'Пароль должен быть строкой' })
|
|
@MinLength(8, { message: 'Пароль должен содержать минимум 8 символов' })
|
|
newPassword!: string;
|
|
}
|
|
|
|
export class SetSuperAdminDto {
|
|
@ApiProperty({ description: 'Выдать или снять права супер-администратора' })
|
|
@IsBoolean({ message: 'isSuperAdmin должно быть boolean' })
|
|
isSuperAdmin!: boolean;
|
|
}
|
|
|
|
export class SetUserVerificationDto {
|
|
@ApiProperty({ description: 'Верифицировать или снять верификацию' })
|
|
@IsBoolean({ message: 'isVerified должно быть boolean' })
|
|
isVerified!: boolean;
|
|
|
|
@ApiPropertyOptional({ description: 'Slug значка из списка (badge-check, star, moon и т.д.)' })
|
|
@IsOptional()
|
|
@IsString({ message: 'Значок должен быть строкой' })
|
|
verificationIcon?: string;
|
|
}
|