trust-module-backend/src/auth/jwt-auth.guard.ts

28 lines
843 B
TypeScript

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<boolean> | Observable<boolean> {
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;
}
}