Ajout de l'update utilisateur avec seulement certaines string + un exemple avec svelte

This commit is contained in:
batche
2022-11-14 18:57:51 +01:00
parent 79b3cbb3d3
commit ee8033e6d8
5 changed files with 50 additions and 22 deletions

View File

@@ -0,0 +1,24 @@
import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';
import { validate } from 'class-validator';
import { plainToInstance } from 'class-transformer';
@Injectable()
export class ValidationPipe implements PipeTransform<any> {
async transform(value: any, { metatype }: ArgumentMetadata) {
if (!metatype || !this.toValidate(metatype)) {
return value;
}
const object = plainToInstance(metatype, value);
const errors = await validate(object);
if (errors.length > 0) {
throw new BadRequestException('Validation failed');
}
return value;
}
private toValidate(metatype: Function): boolean {
const types: Function[] = [String, Boolean, Number, Array, Object];
return !types.includes(metatype);
}
}

View File

@@ -10,6 +10,5 @@ export class CreateUsersDto {
@IsString()
readonly image_url: string;
@IsBoolean()
@IsOptional()
readonly isEnabledTwoFactorAuth: boolean;
}

View File

@@ -4,6 +4,7 @@ import {
} from '@nestjs/common';
import { AuthenticateGuard } from 'src/auth/42/guards/42guards';
import { PaginationQueryDto } from 'src/common/dto/pagination-query.dto';
import { ValidationPipe } from 'src/common/validation/validation.pipe';
import { CreateUsersDto } from './dto/create-users.dto';
import { UpdateUsersDto } from './dto/update-users.dto';
@@ -46,7 +47,7 @@ export class UsersController {
@UseGuards(AuthenticateGuard)
@Patch()
update(@Req() req, @Body() usersUpdateDto: UpdateUsersDto) {
update(@Req() req, @Body(new ValidationPipe()) usersUpdateDto: UpdateUsersDto) {
console.log("DANS PATCH USERS");
return this.usersService.update(req.user.id, usersUpdateDto);
}

View File

@@ -65,7 +65,7 @@ export class UsersService {
}
async update(id: string, updateUserDto: UpdateUsersDto) {
console.log(`Update user ${id} with ${updateUserDto}`);
console.log(`Update user ${id} with ${updateUserDto.image_url} + ${updateUserDto.isEnabledTwoFactorAuth}`);
const user = await this.userRepository.preload(
{id: +id,
...updateUserDto});