Node.js/NestJs

[User] Authentication #4 Guard

Ykie 2023. 4. 8. 01:41
728x90

Guard: Request를 다음 단계로 진행할지 말지 결정하는 함수.

nest g mo auth 로 auth module 추가 (jwt module에서 더 다룰 건 없다)

// auth.guard.ts
@Injectable()
export class AuthGuard implements CanActivate {
  // CanActive는 반환되는 값에 따라 ture일 경우 request를 진행시키고 false인 경우 request를 멈추게 한다.
  canActivate(context: ExecutionContext): boolean {
    // content가 http로 되어 있어서 graphql context로 변환해줘야 한다.
    const gqlContext = GqlExecutionContext.create(context).getContext();
    const user = gqlContext['user'];
    if (!user) {
      return false;
    }
    return true;
  }
}


// user.resolver.ts
...
  @Query((returns) => User)
  @UseGuards(AuthGuard) // authentication!! user role에 따라 권한을 부여할 수도 있고 등등
  me() {}
...

 

But! @UseGuards를 사용하지 않고 Decorator를 추가할 것. #5에서 계속~  

728x90