homemanager-be/src/shared/guards/auth.guard.ts

26 lines
758 B
TypeScript

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { AuthService } from '../auth/auth.service';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private readonly authService: AuthService) {}
async canActivate(context: ExecutionContext): Promise<boolean> {
const http = context.switchToHttp();
const request = http.getRequest();
const response = http.getResponse();
const authHeader = request.header('authorization');
if (!authHeader) return false;
const [, token] = authHeader.split(' ');
if (!token) return false;
const user = await this.authService.getUserFromJWT(token);
if (!user) return false;
response.locals.user = user;
return true;
}
}