From 796a8464b1f5a85474840913a1c92374edd67aa1 Mon Sep 17 00:00:00 2001 From: cherif Date: Tue, 17 Jan 2023 00:30:39 +0100 Subject: [PATCH 1/5] =?UTF-8?q?COrrection=20de=20nombreux=20bug,=20changem?= =?UTF-8?q?ent=20de=20font,=20r=C3=A9el=20username=20unique=20insensible?= =?UTF-8?q?=20=C3=A0=20la=20casse...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/auth/42/authentication.module.ts | 11 +-- .../src/users/entities/user.entity.ts | 2 +- .../api_back/src/users/users.controller.ts | 2 +- .../api_back/src/users/users.service.ts | 16 ++--- .../api_front/public/fonts/PressStart2P.woff | Bin 0 -> 19648 bytes .../api_front/public/fonts/PressStart2P.woff2 | Bin 0 -> 12896 bytes .../svelte/api_front/public/global.css | 12 ++-- .../api_front/src/pages/SplashPage.svelte | 8 +-- .../src/pages/TwoFactorAuthentication.svelte | 2 +- .../api_front/src/pages/game/Game.svelte | 20 ++++-- .../src/pages/game/GameSpectator.svelte | 21 ++++-- .../api_front/src/pages/game/Ranking.svelte | 2 +- .../src/pages/profile/ProfileSettings.svelte | 67 +++++++++--------- .../src/pages/profile/ProfileUsers.svelte | 5 +- .../src/pieces/GenerateUserDisplay.svelte | 2 +- .../svelte/api_front/src/pieces/Header.svelte | 8 +-- 16 files changed, 95 insertions(+), 83 deletions(-) create mode 100644 srcs/requirements/svelte/api_front/public/fonts/PressStart2P.woff create mode 100644 srcs/requirements/svelte/api_front/public/fonts/PressStart2P.woff2 diff --git a/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts index ed3df23a..d7982f81 100644 --- a/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts +++ b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts @@ -12,18 +12,9 @@ import { SessionSerializer } from './utils/serializer'; @Module({ imports: [TypeOrmModule.forFeature([User, Friendship]), UsersModule, - // JwtModule.registerAsync({ - // useFactory: async (configService: ConfigService) => { - // return { - // signOptions: { expiresIn: '1h' }, - // secret: process.env.JWT_SECRET, - // }; - // } - // }) ], providers: [AuthenticationService, FortyTwoStrategy, UsersService, SessionSerializer, FriendshipService - // JwtStrategy -], + ], exports: [AuthenticationService], controllers: [AuthenticationController], }) diff --git a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts index 9b2bc897..c25401cf 100644 --- a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts +++ b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts @@ -15,7 +15,7 @@ export class User { @Column({unique: true}) fortyTwoId: string; - @Column() + @Column({unique: true}) username: string; @Column() 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 1a07db8e..0db08095 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -58,7 +58,7 @@ export class UsersController { @Patch() async update(@Req() req, @Body(new ValidationPipe()) usersUpdateDto: UpdateUsersDto, @Res() response : Response) { console.log('user.controller updating user info') - const user = await this.usersService.update(req.user.id, usersUpdateDto); + const user = await this.usersService.update(req.user.id, usersUpdateDto, req.user.username); if (user.isEnabledTwoFactorAuth === false && user.isTwoFactorAuthenticated === true) this.usersService.setIsTwoFactorAuthenticatedWhenLogout(user.id); if (user.isEnabledTwoFactorAuth === true && user.isTwoFactorAuthenticated === false) 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 c698bed8..680075da 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -55,12 +55,9 @@ export class UsersService { } async isUsernameExists(usernameToSearch: string): Promise { - // console.log('searching for username: ' + usernameToSearch) - - const user = await this.userRepository.findOneBy({username : usernameToSearch}); - - // console.log({...user}) - + const user = await this.userRepository.createQueryBuilder('user') + .where('LOWER(user.username) = LOWER(:username)', {username : usernameToSearch}) + .getOne() if (!user) return false; return true; @@ -101,10 +98,9 @@ export class UsersService { return this.userRepository.save(user); } - async update(id: number, updateUserDto: UpdateUsersDto) { - // console.log(`Update user ${id} with ${updateUserDto.isEnabledTwoFactorAuth}`); - // console.log({...updateUserDto}) - if (await this.isUsernameExists(updateUserDto.username) === true) { + async update(id: number, updateUserDto: UpdateUsersDto, username : string) { + console.log("Maj user username : " + username + " updateuser dto " + updateUserDto.username ) + if (await this.isUsernameExists(updateUserDto.username) === true && updateUserDto.username !== username) { // console.log('updating username ' + updateUserDto.username + ' but it already is in use') throw new HttpException(`The username is already in use.`,HttpStatus.CONFLICT); } diff --git a/srcs/requirements/svelte/api_front/public/fonts/PressStart2P.woff b/srcs/requirements/svelte/api_front/public/fonts/PressStart2P.woff new file mode 100644 index 0000000000000000000000000000000000000000..281bd65168566fb3e8495f753107891513508f9d GIT binary patch literal 19648 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 Kdd}wCEs6w2)8NAZ literal 0 HcmV?d00001 diff --git a/srcs/requirements/svelte/api_front/public/global.css b/srcs/requirements/svelte/api_front/public/global.css index 151d0d36..4a77fd07 100644 --- a/srcs/requirements/svelte/api_front/public/global.css +++ b/srcs/requirements/svelte/api_front/public/global.css @@ -16,11 +16,11 @@ body { } @font-face { - font-family: "Bit5x3"; + font-family: "PressStart2P"; src: - url("./fonts/Bit5x3.woff2") format("woff2"), - local("Bit5x3"), - url("./fonts/Bit5x3.woff") format("woff"); + url("./fonts/PressStart2P.woff2") format("woff2"), + local("PressStart2P"), + url("./fonts/PressStart2P.woff") format("woff"); font-weight: normal; font-style: normal; font-display: swap; @@ -42,8 +42,8 @@ a:visited { .background-pages { background-color: #333; - font-family: "Bit5x3"; - font-size: 2vw; + font-family: "PressStart2P"; + font-size: 1vw; color: white; } diff --git a/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte b/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte index c944f34e..35801347 100644 --- a/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte @@ -71,8 +71,8 @@ border-color: #071013; border-width: 2px; color: white; - font-family: "Bit5x3"; - font-size: x-large; + font-family: "PressStart2P"; + font-size: 1vw; padding: 10px; } @@ -81,8 +81,8 @@ border-color: #071013; border-width: 2px; color: white; - font-family: "Bit5x3"; - font-size: x-large; + font-family: "PressStart2P"; + font-size: 1vw; padding: 10px; } diff --git a/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte b/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte index be30e387..ac807fca 100644 --- a/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte @@ -88,7 +88,7 @@ .error { font-weight: bold; - font-size: 0.8em; + font-size: 1vw; color: red; } diff --git a/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte b/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte index 3cf3590f..f9c1011f 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte @@ -393,7 +393,16 @@