71 lines
1.3 KiB
TypeScript
Executable File
71 lines
1.3 KiB
TypeScript
Executable File
import { IsEmail, IsString, MinLength, IsOptional } from "class-validator";
|
|
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
|
|
|
|
export class RegisterDto {
|
|
@ApiProperty({ example: "user@example.com" })
|
|
@IsEmail()
|
|
email: string;
|
|
|
|
@ApiProperty({ example: "password123", minLength: 8 })
|
|
@IsString()
|
|
@MinLength(8)
|
|
password: string;
|
|
|
|
@ApiPropertyOptional({ example: "John" })
|
|
@IsOptional()
|
|
@IsString()
|
|
firstName?: string;
|
|
|
|
@ApiPropertyOptional({ example: "Doe" })
|
|
@IsOptional()
|
|
@IsString()
|
|
lastName?: string;
|
|
}
|
|
|
|
export class LoginDto {
|
|
@ApiProperty({ example: "user@example.com" })
|
|
@IsEmail()
|
|
email: string;
|
|
|
|
@ApiProperty({ example: "password123" })
|
|
@IsString()
|
|
password: string;
|
|
}
|
|
|
|
export class RefreshTokenDto {
|
|
@ApiProperty()
|
|
@IsString()
|
|
refreshToken: string;
|
|
}
|
|
|
|
export class UserInfoDto {
|
|
@ApiProperty()
|
|
id: string;
|
|
|
|
@ApiProperty()
|
|
email: string;
|
|
|
|
@ApiProperty({ required: false })
|
|
firstName?: string;
|
|
|
|
@ApiProperty({ required: false })
|
|
lastName?: string;
|
|
|
|
@ApiProperty()
|
|
roles: string[];
|
|
}
|
|
|
|
export class TokenResponseDto {
|
|
@ApiProperty()
|
|
accessToken: string;
|
|
|
|
@ApiProperty()
|
|
refreshToken: string;
|
|
|
|
@ApiProperty()
|
|
expiresIn: number;
|
|
|
|
@ApiProperty({ type: UserInfoDto })
|
|
user: UserInfoDto;
|
|
}
|