From eb73e0d690c7f20005ef3f86b0924baf98f81134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allen=20/=20=EC=9E=84=EA=B8=B0=EC=9B=90?= Date: Sun, 14 Jan 2024 22:43:43 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=9C=EB=B0=9C=20=ED=99=98=EA=B2=BD?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=95=A1=EC=84=B8=EC=8A=A4=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EB=AF=B8=EC=82=AC=EC=9A=A9=EC=8B=9C=20header?= =?UTF-8?q?=EC=97=90=20user=5Fid=20=EC=B6=94=EA=B0=80=20=EA=B0=95=EC=A0=9C?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20(#78)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/decorator/user-id.decorator.ts | 11 ---------- src/common/filter/fail-exception.filter.ts | 1 - src/common/guard/global/access-token.guard.ts | 22 ++++++++++++++++++- src/v1/auth/auth.controller.ts | 1 - 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/common/decorator/user-id.decorator.ts b/src/common/decorator/user-id.decorator.ts index ea4052c..86b081f 100644 --- a/src/common/decorator/user-id.decorator.ts +++ b/src/common/decorator/user-id.decorator.ts @@ -1,5 +1,4 @@ import { - BadRequestException, createParamDecorator, InternalServerErrorException, } from '@nestjs/common'; @@ -13,15 +12,5 @@ export const UserId = createParamDecorator((_, ctx) => { ); } - if (process.env.NODE_ENV === 'development') { - if (!request.query?.userId) { - throw new BadRequestException( - 'dev환경에서는 Query Parameter로 userId를 넣어주어야 합니다.', - ); - } - - return request.query?.userId; - } - return request.userId; }); diff --git a/src/common/filter/fail-exception.filter.ts b/src/common/filter/fail-exception.filter.ts index db07cb2..10580c4 100644 --- a/src/common/filter/fail-exception.filter.ts +++ b/src/common/filter/fail-exception.filter.ts @@ -22,7 +22,6 @@ export class FailExceptionFilter implements ExceptionFilter { const response = ctx.getResponse(); const message = exception.getResponse()['message']; - this.logger.warn(`FAIL - ${message}`); return response.status(statusCode).json({ diff --git a/src/common/guard/global/access-token.guard.ts b/src/common/guard/global/access-token.guard.ts index 7f9a7d0..7d9a0c1 100644 --- a/src/common/guard/global/access-token.guard.ts +++ b/src/common/guard/global/access-token.guard.ts @@ -1,4 +1,5 @@ import { + BadRequestException, type ExecutionContext, Injectable, UnauthorizedException, @@ -12,14 +13,21 @@ import { BearerTokenGuard } from '@/common/guard/bearer-token.guard'; @Injectable() export class AccessTokenGuard extends BearerTokenGuard { async canActivate(context: ExecutionContext) { - // 액세스 토큰이 필요 없는 요청 const request = context.switchToHttp().getRequest(); const path = request.route.path; + // 액세스 토큰이 필요 없는 요청 if (path.startsWith('/auth/')) { return true; } + if ( + process.env.NODE_ENV === 'development' && + !request.headers.authorization + ) { + return this.devAuthenticate(request); + } + // BearerTokenGuard 검증 try { await super.canActivate(context); @@ -36,4 +44,16 @@ export class AccessTokenGuard extends BearerTokenGuard { return true; } + + devAuthenticate(request: any) { + if (!request.headers.user_id) { + throw new BadRequestException( + 'dev환경에서는 액세스토큰 미사용시 header에 user_id라는 key로 userId를 넣어주어야 합니다.', + ); + } + + request.userId = request.headers.user_id; + + return true; + } } diff --git a/src/v1/auth/auth.controller.ts b/src/v1/auth/auth.controller.ts index 11ca0fc..fe90a67 100644 --- a/src/v1/auth/auth.controller.ts +++ b/src/v1/auth/auth.controller.ts @@ -1,7 +1,6 @@ import { Controller, HttpCode, - HttpException, HttpStatus, Inject, Post,