diff --git a/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts b/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts index 80f525a9..4c86a8de 100644 --- a/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts +++ b/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts @@ -1,5 +1,4 @@ import { IsBoolean, IsEmail, IsOptional, IsString } from 'class-validator'; -import { Unique } from 'typeorm'; export class CreateUsersDto { @IsString() diff --git a/srcs/requirements/nestjs/api_back/src/users/dto/partial-users.dto.ts b/srcs/requirements/nestjs/api_back/src/users/dto/partial-users.dto.ts new file mode 100644 index 00000000..eda9cc14 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/users/dto/partial-users.dto.ts @@ -0,0 +1,4 @@ +import { OmitType, PartialType } from "@nestjs/mapped-types"; +import { CreateUsersDto } from "./create-users.dto"; + +export class PartialUsersDto extends OmitType(CreateUsersDto, ['fortyTwoId'] as const){} diff --git a/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts b/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts index 763670d6..1f4d10cf 100644 --- a/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts +++ b/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts @@ -2,7 +2,7 @@ // et de les mettre comme optionnelles. De plus on peut hériter // des décorateurs de la classe parente (par exemple @IsString()). -import { PartialType } from "@nestjs/mapped-types"; +import { OmitType, PartialType } from "@nestjs/mapped-types"; import { CreateUsersDto } from "./create-users.dto"; -export class UpdateUsersDto extends PartialType(CreateUsersDto){} +export class UpdateUsersDto extends OmitType(CreateUsersDto, ['fortyTwoId', 'email'] as const){} diff --git a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts index b472f6d1..e321636f 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -31,11 +31,11 @@ export class UsersController { * car un utilisateur est crée à la première connexion avec l'Oauth de 42. */ - // @UseGuards(AuthenticateGuard) - // @Get() - // findOne(@Req() req) { - // return this.usersService.findOne(req.user.id); - // } + @UseGuards(AuthenticateGuard) + @Get() + findOne(@Req() req) { + return this.usersService.findOne(req.user.id); + } // @UseGuards(AuthenticateGuard) // @Post() @@ -47,6 +47,7 @@ export class UsersController { @UseGuards(AuthenticateGuard) @Patch() update(@Req() req, @Body() usersUpdateDto: UpdateUsersDto) { + console.log("DANS PATCH USERS"); return this.usersService.update(req.user.id, usersUpdateDto); } diff --git a/srcs/requirements/nestjs/api_back/src/users/users.service.ts b/srcs/requirements/nestjs/api_back/src/users/users.service.ts index a47e1d0b..a6a0097c 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -8,6 +8,7 @@ import { UpdateUsersDto } from './dto/update-users.dto'; import { Friendship } from '../friendship/entities/friendship.entity'; import { isNumberString } from 'class-validator'; import { PaginationQueryDto } from 'src/common/dto/pagination-query.dto'; +import { PartialUsersDto } from './dto/partial-users.dto'; // On va devoir sûrement trouver un moyen plus simple pour passer l'id, sûrement via des pipes // ou des interceptors, mais pour l'instant on va faire comme ça. @@ -36,7 +37,13 @@ export class UsersService { const user = await this.userRepository.findOneBy({id: +id}); if (!user) throw new NotFoundException(`The requested user not found.`); - return user; + const partialUser : Partial = { + username: user.username, + email: user.email, + image_url: user.image_url, + isEnabledTwoFactorAuth: user.isEnabledTwoFactorAuth, + }; + return partialUser; } // Example : http://localhost:3000/users?limit=10&offset=20 @@ -68,7 +75,7 @@ export class UsersService { } async remove(id: string) { - const user = await this.findOne(id); + const user = await this.userRepository.findOneBy({id: +id}); if (!user) throw new HttpException(`The user could not be deleted.`,HttpStatus.NOT_FOUND); return this.userRepository.remove(user); diff --git a/srcs/requirements/svelte/api_front/src/App.svelte b/srcs/requirements/svelte/api_front/src/App.svelte index 79aad200..e02c1ce1 100644 --- a/srcs/requirements/svelte/api_front/src/App.svelte +++ b/srcs/requirements/svelte/api_front/src/App.svelte @@ -3,11 +3,13 @@ import Home from "./pages/home/home.svelte"; import Router, {link} from 'svelte-spa-router'; import Profil from "./pages/profil/profil.svelte"; + import UpdateProfil from "./pages/profil/updateProfil.svelte"; const routes = { "/": Home, "/login": Login, "/profil": Profil, + "/update-profil": UpdateProfil, }; diff --git a/srcs/requirements/svelte/api_front/src/pages/home/home.svelte b/srcs/requirements/svelte/api_front/src/pages/home/home.svelte index d069733f..f5d247a8 100644 --- a/srcs/requirements/svelte/api_front/src/pages/home/home.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/home/home.svelte @@ -2,9 +2,11 @@ import Router, { link } from "svelte-spa-router"; import Login from "../auth/login.svelte"; import Profil from "../profil/profil.svelte"; + import UpdateProfil from "../profil/updateProfil.svelte"; const routes = { "/login": Login, "/profil": Profil, + "/update-profil": UpdateProfil, }; @@ -31,6 +33,16 @@ Profil +
diff --git a/srcs/requirements/svelte/api_front/src/pages/profil/updateProfil.svelte b/srcs/requirements/svelte/api_front/src/pages/profil/updateProfil.svelte new file mode 100644 index 00000000..db983491 --- /dev/null +++ b/srcs/requirements/svelte/api_front/src/pages/profil/updateProfil.svelte @@ -0,0 +1,88 @@ + + + +
+
+ {#if errors.username} + + {/if} + {#if errors.image_url} + + {/if} +
+ + + + + + +
+ + +
+ + +
+
+
+ + +