개발일지
[NestJS] Custom decorators 본문
Custom Decorator
앞서 구현한 JwtAccessGuard는 JwtAccessStrategy를 거쳐 인증된 user 객체를 반환했습니다. 이를 바탕으로 인증된 유저 정보를 추출하는 @CurrUser()
데코레이터를 구현했습니다.
// auth.decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const CurrUser = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
const user = request?.user;
return data ? user[data] : user.id;
},
);
Decorator data
위의 createParamDecorator
의 인자인 data는 데코레이터 선언 시 인자로 넘기는 값입니다. @CurrUser('email')
과 같이 사용하면 user 객체의 email 값만 가져옵니다. 따라서 위의 코드는 받아오는 인자가 없으면 user id를 반환하도록 구현했습니다. 구현한 데코레이터는 다음과 같이 사용합니다.
@UseGuards(JwtAccessGuard)
@Get('profile')
async getUserProfile(@CurrUser('id') userId: number) {
console.log('userid: ', userId);
const whereOption: WhereOptionByUserId = { id: userId };
return {
users: await this.usersRepository.findUserByWhereOption(whereOption),
};
}
'NestJS, Node.js > #01 Project - 투표 커뮤니티' 카테고리의 다른 글
중간점검: 프로젝트 구조 변경 (0) | 2022.10.30 |
---|---|
[NestJS] Refresh token으로 Access token 재발급하기 (0) | 2022.10.28 |
[NestJS] 로그인 구현 #2 - Passport, JWT (0) | 2022.10.27 |
[NestJS] 로그인 구현 #1 - 유효성 검증 (0) | 2022.10.27 |
[NestJS] 회원가입 구현 #2 - 유효성 검증 (0) | 2022.10.27 |