import { CanActivate, ExecutionContext } from '@nestjs/common' import { HttpRequest } from 'aws-sdk' import { extractBearerToken, isBlank } from '../utils' export abstract class BearerAuthorizationGuard implements CanActivate { protected abstract checkToken(token: string, request?: HttpRequest): boolean canActivate(context: ExecutionContext): boolean | Promise { const request = context.switchToHttp().getRequest() return this.validateRequest(request) } private validateRequest(request: HttpRequest): boolean { const token = extractBearerToken(request) if (isBlank(token)) return false return this.checkToken(token, request) } }