Files
IdP/apps/api-gateway/src/dto/admin.dto.ts
2026-06-25 16:01:41 +03:00

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