[Nestjs] 프로바이더 - 유저서비스 그 외

The Dragonite·2023년 12월 5일
0

Nestjs

목록 보기
9/9
post-thumbnail

유저서비스 그 외

이메일 인증

이메일 인증의 경우에는 받은 메일에서 버튼을 통하여 /email-verify 엔드포인트로 POST 요청이 왔을 때 처리해야하는 로직인데, 다음과 같이 코드를 작성할 수 있다.

@Post('/email-verify')
async verifyEmail(@Query() dto: VerifyDto): Promise<string> {
  const { signupVerifyToken } = dto;

  return await this.usersService.verifyEmail(signupVerifyToken);
}
async verifyEmail(signupVerifyToken: string) {
  /**
  * TODO
  * 1. DB에서 signupVerifyToken으로 가입 처리 중인 유저가 있는지 조회 없다면 에러 처리
  * 2. 바로 로그인 상태가 되도록 JWT 발급
  */
  
  // 우선은 DB가 구현되어 있지 않으므로 에러를 던진다
  throw new Error('Method not implement yet');
}

로그인

컨트롤러에서는 /login 엔드포인트로 POST 요청을 보내는 것을 응답 처리만 하도록 하자

@Post('/login')
async login(@Body() dto: UserLoginDto): Promise<string> {
  const { email, password } = dto;

  return await this.usersService.login(email, password);
}

로그인의 경우에는 전달 받은 이메일 주소와 비밀번호로 가입 처리가 완료된 유저가 존재하는지 검사하고 있다면 JWT를 발급하여 응답으로 돌려주는 식의 로직으로 구성하면 된다. 위와 마찬가지로 DB가 아직 구현되어 있지 않으므로, 에러를 던지는 것으로 우선 구현하겠다.

async login(email: string, password: string): Promise<string> {
  /**
  *TODO
  * 1. email, password를 가진 유저가 존재하는지 DB에서 조회 후에 없다면 에러
  * 2. JWT 발급
  */
  
  throw new Error('Method not implement yet');
}

유저 정보 조회

컨트롤러에서는 /:id 엔드포인트로 GET 요청이 들어오는 경우에 응답을 처리 하도록 하자.

@Get('/:id')
async getUserInfo(@Param('id') userId: string): Promise<UserInfo> {
  return await this.usersService.getUserInfo(userId);
}

getUser의 경우에도 DB가 없을 경우 조회할 수 있는 것이 없으므로 추후에 DB와 관련된 코드를 작성하기로 하고 에러를 던지는 것을 구현하자.

async getUserInfo(userId: string): Promise<UserInfo> {
  /**
  * TODO
  * 1. userId를 가진 유저가 존재하는지 확인 후에 없다면 에러 처리
  * 2. 조회된 데이터를 UserInfo 타입으로 리턴
  */
}

이 포스트는 위 책을 기반으로 작성하고 있습니다...

0개의 댓글

관련 채용 정보