import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Observable } from 'rxjs'; import { JwtService } from '@nestjs/jwt'; @Injectable() export class JwtAuthGuard implements CanActivate { constructor(private jwtService: JwtService) {} canActivate(context: ExecutionContext): boolean | Promise | Observable { const request = context.switchToHttp().getRequest(); try { const token = this.extractToken(request); if (!token) return false; const payload = this.jwtService.verify(token); request.user = payload; return true; } catch (e) { return false; } } private extractToken(request): string | null { return request.cookies?.access_token || request.headers.authorization?.split(' ')[1] || null; } }