import { ExecutionContext, Injectable, UnauthorizedException, } from '@nestjs/common'; import { AuthGuard as NestAuthGuard } from '@nestjs/passport'; import { Reflector } from '@nestjs/core'; @Injectable() export class AuthGuard extends NestAuthGuard('jwt') { public constructor(private readonly reflector: Reflector) { super(); } canActivate(context: ExecutionContext) { const isPublic = this.reflector.get( 'isPublic', context.getHandler(), ); if (isPublic) { return true; } // Add your custom authentication logic here // for example, call super.logIn(request) to establish a session. return super.canActivate(context); } }