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 d6811642..bdb9f20e 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -120,7 +120,7 @@ export class UsersController { return res.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE).json({message : "Unsupported media type. Please use a valid image file."}); } - + // don't pass your own username // GET http://transcendance:8080/user/avatar?username=username @UseGuards(AuthenticateGuard) @UseGuards(TwoFactorGuard) 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 fbb6156a..e44cd2ad 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -50,12 +50,10 @@ export class UsersService { return partialUser; } - - /***** THIS IS THE THING I REALLY NEED TO FIX!!!!!!! *****/ - - // Ok this gets called in the Authenitcation Service, but like i was still able to make a username === someone else's async isUsernameExists(usernameToSearch: string): Promise { - const user = await this.userRepository.findOneBy({username : usernameToSearch}); + console.log('searching for username: ' + usernameToSearch) + const user = await this.userRepository.findOneBy({username : usernameToSearch}); + console.log({...user}) if (!user) return false; return true; @@ -84,6 +82,8 @@ export class UsersService { } async create(createUserDto: CreateUsersDto) { + // console.log('\nuser.services create a new user, createUserDto: ') + // console.log({...createUserDto}) if (await this.userRepository.findOneBy({fortyTwoId: createUserDto.fortyTwoId})) throw new HttpException(`The user already exists.`,HttpStatus.CONFLICT); const user = this.userRepository.create(createUserDto); @@ -95,6 +95,11 @@ export class UsersService { async update(id: number, updateUserDto: UpdateUsersDto) { // console.log(`Update user ${id} with ${updateUserDto.isEnabledTwoFactorAuth}`); + // console.log({...updateUserDto}) + if (await this.isUsernameExists(updateUserDto.username) === true) { + console.log('updating username ' + updateUserDto.username + ' but it already is in use') + throw new HttpException(`The username is already in use.`,HttpStatus.CONFLICT); + } const user = await this.userRepository.preload( {id: id, ...updateUserDto}); diff --git a/srcs/requirements/svelte/api_front/src/App.svelte b/srcs/requirements/svelte/api_front/src/App.svelte index b9b7c6c2..95e04345 100644 --- a/srcs/requirements/svelte/api_front/src/App.svelte +++ b/srcs/requirements/svelte/api_front/src/App.svelte @@ -9,7 +9,8 @@ console.error('conditionsFailed event', event.detail); // i mean i guess i can just leave this in there permanently? - replace('/unauthorized-access'); + // replace('/unauthorized-access'); + replace('/'); }; diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte index 7a6dbd2f..35a71898 100644 --- a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte @@ -78,9 +78,11 @@ if (response.status === 200) success.username = "Your changes have been saved" else if (response.status === 201) - push("/2fa") + push("/2fa"); + else if (response.status === 409) + errors.username = `${set.username} is already in use, pick a different one.`; else - errors.username = "Something went wrong" + errors.username = "Something went wrong"; } ) .catch((err) => errors.username = err) diff --git a/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte b/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte index b235f64a..4c33e9f7 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/GenerateUserDisplay.svelte @@ -9,17 +9,12 @@ let avatar; // avatar needs to be updated!!! console.log('Generate User Display, BEFORE on mount ' + avatar) + // add errors + let errors = {avatar: ''}; onMount( async() => { - console.log('Generate User Display, on mount ' + user.username) - // using this for now cuz for some reason there is yet to be a way to fet another person's avatar + // console.log('Generate User Display, on mount ' + user.username) if (primary) { - // await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user/avatar?username=${user.username}`, {method: "GET"}) - // .then(response => {return response.blob()}) - // .then(data => { - // const url = URL.createObjectURL(data); - // avatar = url; - // }); await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user/avatar`, {method: "GET"}) .then(response => {return response.blob()}) .then(data => { @@ -27,8 +22,8 @@ avatar = url; }) .catch(() => errors.avatar = 'Sorry your avatar could not be loaded' ); - console.log('avatar: ') - console.log(avatar) + // console.log('avatar: ') + // console.log(avatar) } else { await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user/avatar?username=${user.username}`, {method: "GET"}) .then(response => {return response.blob()}) @@ -40,6 +35,9 @@ } }) + + /**** THIS IS BASICALLY ALL THE RANK LOGIC ERIC HAS MADE ****/ + if (user.loseGame > user.winGame) { rank = 'Bitch Ass Loser!' } else if (user.loseGame === user.winGame) { @@ -86,6 +84,7 @@ default user icon +
{errors.avatar}
{user.username}
Rank: @@ -169,6 +168,11 @@ font-weight: bold; } + .error{ + font-size: 0.8em; + font-weight: bold; + color: red; + } /* Glittery Star Stuff */