From 686067375a49ff05f1946e1c473c72fad862ae7f Mon Sep 17 00:00:00 2001 From: batche Date: Thu, 17 Nov 2022 18:01:52 +0100 Subject: [PATCH] =?UTF-8?q?correction=20de=20l'upload=20d'image,=20reste?= =?UTF-8?q?=20=C3=A0=20faire=20en=20sorte=20de=20n'accepter=20que=20du=20p?= =?UTF-8?q?ng=20ou=20jpg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srcs/requirements/nestjs/.dockerignore | 2 -- srcs/requirements/nestjs/Dockerfile | 7 ++++--- .../src/auth/42/authentication.service.ts | 15 ++++++++++++- .../src/common/constants/constants.ts | 13 +++++++++--- .../api_back/src/users/users.controller.ts | 17 ++------------- .../api_back/src/users/users.service.ts | 21 ++++++++++++++++++- srcs/requirements/svelte/Dockerfile | 3 ++- 7 files changed, 52 insertions(+), 26 deletions(-) diff --git a/srcs/requirements/nestjs/.dockerignore b/srcs/requirements/nestjs/.dockerignore index c2e21c2c..1d0134c5 100644 --- a/srcs/requirements/nestjs/.dockerignore +++ b/srcs/requirements/nestjs/.dockerignore @@ -10,5 +10,3 @@ !api_back/*.lock !api_back/.env !api_back/src/uploads/avatars/default.png -!api_back/*.jpg -!api_back/*.jpeg diff --git a/srcs/requirements/nestjs/Dockerfile b/srcs/requirements/nestjs/Dockerfile index dd046602..7b7b7e7c 100644 --- a/srcs/requirements/nestjs/Dockerfile +++ b/srcs/requirements/nestjs/Dockerfile @@ -2,10 +2,11 @@ FROM node:alpine AS development WORKDIR /usr/app -COPY api_back/* . -COPY api_back/.env .env - +COPY ./api_back ./ +COPY ./api_back/.env ./.env +COPY ./api_back/src/uploads/avatars/default.png ./uploads/avatars/default.png RUN npm ci + CMD [ "npm", "run", "start:dev" ] diff --git a/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts index a3aa9517..da1c4c47 100644 --- a/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts +++ b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts @@ -4,6 +4,7 @@ import { User } from 'src/users/entities/user.entity'; import { UsersService } from 'src/users/users.service'; import { toFileStream } from 'qrcode'; import { authenticator } from 'otplib'; +import { randomUUID } from 'crypto'; @Injectable() export class AuthenticationService { @@ -16,7 +17,19 @@ export class AuthenticationService { const user = await this.userService.findOneByFourtyTwoId(createUsersDto.fortyTwoId); if (user) return user; - return this.userService.create(createUsersDto); + + let check_name : boolean = false; + if (!user) + check_name = await this.userService.isUsernameExists(createUsersDto.username); + if (!check_name) + return await this.userService.create(createUsersDto); + let createUsersDtoWithUsername : CreateUsersDto = createUsersDto; + while (check_name === true) + { + createUsersDtoWithUsername = { ...createUsersDto, username: createUsersDto.username + randomUUID() }; + check_name = await this.userService.isUsernameExists(createUsersDtoWithUsername.username); + } + return this.userService.create(createUsersDtoWithUsername); } async findUser(fourtytwo_id : string): Promise { diff --git a/srcs/requirements/nestjs/api_back/src/common/constants/constants.ts b/srcs/requirements/nestjs/api_back/src/common/constants/constants.ts index 1b549ac1..b10583b0 100644 --- a/srcs/requirements/nestjs/api_back/src/common/constants/constants.ts +++ b/srcs/requirements/nestjs/api_back/src/common/constants/constants.ts @@ -1,14 +1,21 @@ import { randomUUID } from "crypto"; import { diskStorage } from "multer"; -import path from "path"; + + +const MIME_TYPES = { + 'image/jpg': 'jpg', + 'image/jpeg': 'jpg', + 'image/png': 'png' +}; + export const storageForAvatar = { storage: diskStorage({ destination: './uploads/avatars', filename: (req, file, cb) => { - console.log(file); const filename : string = file.originalname.split(' ').join('_') + randomUUID(); - const extension : string = path.extname(file.originalname); + console.log("RES : " ) + const extension : string = MIME_TYPES[file.mimetype]; cb(null, `${filename}${extension}`); } }) 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 2d8828ac..84cdeb3e 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -1,5 +1,5 @@ import { - Body, Controller, Delete, Get, HttpException, NotFoundException, Patch, Post, Query, Req, Res, UploadedFile, UseGuards, UseInterceptors + Body, Controller, Delete, Get, NotFoundException, Patch, Post, Query, Req, Res, UploadedFile, UseGuards, UseInterceptors } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { AuthenticateGuard, TwoFactorGuard } from 'src/auth/42/guards/42guards'; @@ -8,22 +8,9 @@ import { ValidationPipe } from 'src/common/validation/validation.pipe'; import { UpdateUsersDto } from './dto/update-users.dto'; import { UsersService } from './users.service'; import { User } from './entities/user.entity'; -import { diskStorage } from 'multer'; -import path from 'path'; -import { randomUUID } from 'crypto'; import { of } from 'rxjs'; +import { storageForAvatar } from 'src/common/constants/constants'; -export const storageForAvatar = { - storage: diskStorage({ - destination: './uploads/avatars', - filename: (req, file, cb) => { - const filename : string = file.originalname.split(' ').join('_') + randomUUID(); - console.log("RES : " ) - const extension : string = path.extname(file.originalname); - cb(null, `${filename}${extension}`); - } - }) -} @Controller('user') export class UsersController { 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 dbfc5fd4..475aa484 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -40,9 +40,28 @@ export class UsersService { throw new NotFoundException(`The requested user not found.`); const partialUser : Partial = { username: user.username, - email: user.email, image_url: user.image_url, isEnabledTwoFactorAuth: user.isEnabledTwoFactorAuth, + status: user.status, + }; + return partialUser; + } + + async isUsernameExists(usernameToSearch: string): Promise { + const user = await this.userRepository.findOneBy({username : usernameToSearch}); + if (!user) + return false; + return true; + } + + async findOneByUsername(username: string) { + const user = await this.userRepository.findOneBy({username : username}); + if (!user) + throw new HttpException(`The user could not be found.`,HttpStatus.NOT_FOUND); + const partialUser : Partial = { + username: user.username, + image_url: user.image_url, + status: user.status, }; return partialUser; } diff --git a/srcs/requirements/svelte/Dockerfile b/srcs/requirements/svelte/Dockerfile index 9db433d4..ca3aca15 100644 --- a/srcs/requirements/svelte/Dockerfile +++ b/srcs/requirements/svelte/Dockerfile @@ -2,8 +2,9 @@ FROM node:alpine AS development WORKDIR /usr/app -COPY ./api_front/* . +COPY ./api_front ./ RUN npm ci + CMD [ "npm", "run", "dev" ]