86 lines
1.9 KiB
TypeScript
86 lines
1.9 KiB
TypeScript
import { ApiProperty } from '@nestjs/swagger';
|
|
import {
|
|
IsBoolean,
|
|
IsDateString,
|
|
IsEmail,
|
|
IsEnum,
|
|
IsNotEmpty,
|
|
IsOptional,
|
|
IsString,
|
|
MinLength,
|
|
MaxLength
|
|
} from 'class-validator';
|
|
import { RoleType, GenreType, StatutUtilisateurType } from 'src/entities/users.entity';
|
|
|
|
export class CreateUserDto {
|
|
@ApiProperty({ example: 'sosso.test@example.com' })
|
|
@IsEmail()
|
|
@IsNotEmpty()
|
|
email: string;
|
|
|
|
@ApiProperty({
|
|
minLength: 6,
|
|
description: 'Mot de passe en clair (hashé côté serveur)'
|
|
})
|
|
@IsString()
|
|
@MinLength(6)
|
|
password: string;
|
|
|
|
@ApiProperty({ example: 'Julien' })
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@MaxLength(100)
|
|
first_name: string;
|
|
|
|
@ApiProperty({ example: 'Dupont' })
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@MaxLength(100)
|
|
last_name: string;
|
|
|
|
@ApiProperty({ enum: GenreType, required: false, default: GenreType.AUTRE })
|
|
@IsOptional()
|
|
@IsEnum(GenreType)
|
|
gender?: GenreType = GenreType.AUTRE;
|
|
|
|
@ApiProperty({ enum: RoleType, default: RoleType.PARENT })
|
|
@IsEnum(RoleType)
|
|
role: RoleType = RoleType.PARENT;
|
|
|
|
@ApiProperty({ enum: StatutUtilisateurType, required: false, default: StatutUtilisateurType.EN_ATTENTE })
|
|
@IsOptional()
|
|
@IsEnum(StatutUtilisateurType)
|
|
status?: StatutUtilisateurType = StatutUtilisateurType.EN_ATTENTE;
|
|
|
|
@ApiProperty({ example: '+33123456789' })
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@MaxLength(20)
|
|
phone: string;
|
|
|
|
@ApiProperty({ example: '10 rue de la paix, 75000 Paris' })
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
address: string;
|
|
|
|
@ApiProperty({ example: 'https://example.com/photo.jpg', required: false })
|
|
@IsOptional()
|
|
@IsString()
|
|
photo_url?: string;
|
|
|
|
@ApiProperty({ default: false })
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
consent_photo?: boolean = false;
|
|
|
|
@ApiProperty({ required: false })
|
|
@IsOptional()
|
|
@IsDateString()
|
|
consent_photo_at?: string;
|
|
|
|
@ApiProperty({ default: false })
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
must_change_password?: boolean = false;
|
|
}
|