Ajout de l'update utilisateur avec seulement certaines string + un exemple avec svelte
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,5 @@ export class CreateUsersDto {
|
||||
@IsString()
|
||||
readonly image_url: string;
|
||||
@IsBoolean()
|
||||
@IsOptional()
|
||||
readonly isEnabledTwoFactorAuth: boolean;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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});
|
||||
|
||||
Reference in New Issue
Block a user