26 lines
758 B
TypeScript
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;
|
|
}
|
|
}
|