21 lines
735 B
TypeScript
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;
|
|
}
|
|
}
|