import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import { jwtConstants } from './constants'; import { Request } from 'express'; @Injectable() export class CheckGuard implements CanActivate { constructor(private jwtService: JwtService) {} async canActivate(context: ExecutionContext): Promise { const request = context.switchToHttp().getRequest(); const token = this.extractTokenFromHeader(request); if (!token) { return true; } try { const payload = await this.jwtService.verifyAsync(token, { secret: jwtConstants.secret, }); request['user'] = payload; return payload; } catch (err) { console.log(err); return true; } } private extractTokenFromHeader(request: Request): string | undefined { const [type, token] = request.headers.authorization?.split(' ') ?? []; return type === 'Bearer' ? token : undefined; } }