faloker/purify

View on GitHub
api/src/users/dto/user.dto.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import {
  IsEmail,
  IsNotEmpty,
  IsString,
  MinLength,
  Matches,
  IsIn,
  IsArray,
  ArrayNotEmpty,
  IsBoolean,
  MaxLength,
  IsOptional,
} from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Role } from '../interfaces/user.interface';

export class CreateUserDto {
  @ApiProperty()
  @IsEmail()
  readonly email: string;

  @ApiProperty()
  @IsString()
  @IsIn(['owner', 'admin', 'user', 'observer'])
  readonly role: string;

  @ApiProperty()
  @IsBoolean()
  readonly ssoBypass: boolean;

  @ApiPropertyOptional()
  @IsArray()
  @IsOptional()
  readonly memberships?: string[];
}

export class EditUserDto extends CreateUserDto {
  @ApiPropertyOptional()
  @IsString()
  @IsOptional()
  readonly name: string;
}

export class LoginUserDto {
  @ApiProperty()
  @IsEmail()
  readonly email: string;

  @ApiProperty()
  @IsString()
  @IsNotEmpty()
  readonly password: string;
}

export class UserList extends EditUserDto {
  readonly _id: string;
}

export class ChangePasswordDto {
  @ApiProperty()
  @IsString()
  @MinLength(6)
  @MaxLength(40)
  readonly password: string;

  @ApiProperty()
  @IsString()
  @IsNotEmpty()
  readonly token: string;
}

export class UserChangePasswordDto {
  @ApiProperty()
  @IsString()
  @IsNotEmpty()
  readonly oldPassword: string;

  @ApiProperty()
  @IsString()
  @MinLength(6)
  @MaxLength(40)
  readonly newPassword: string;
}

export class UserSelfChangeDto {
  @ApiProperty()
  @IsOptional()
  @IsString()
  @IsNotEmpty()
  readonly trackMe?: string;

  @ApiProperty()
  @IsOptional()
  @IsString()
  @IsNotEmpty()
  readonly name?: string;

  @ApiProperty()
  @IsOptional()
  @IsEmail()
  @IsNotEmpty()
  readonly email?: string;

  @ApiProperty()
  @IsOptional()
  @IsString()
  @IsNotEmpty()
  readonly image?: string;
}

export class CreateTokenDto {
  @ApiProperty()
  @IsString()
  @IsNotEmpty()
  readonly name: string;
}
export class DeleteTokenDto {
  @ApiProperty()
  @IsString()
  @IsNotEmpty()
  readonly _id: string;
}