bex-twn/src/guards/auth.guard.ts

21 lines
735 B
TypeScript

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';
import type { Response, Request } from 'express';
@Injectable()
export class AuthGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest<Request>();
const response = context.switchToHttp().getResponse<Response>();
const authHeader = request.header('Authorization');
if (!authHeader) return true; // false;
const [, token] = authHeader.split(' ');
if (!token) return true; // false
// Validate `token` JWT here
response.locals.token = token;
return true;
}
}