Create guard to validate JWT token

master
nicekid1 2 months ago
parent effc393545
commit 238cd06920
  1. 26
      src/guard/auth.guard.ts
  2. 3
      src/users/users.module.ts

@ -0,0 +1,26 @@
import { Injectable } from "@nestjs/common";
import { CanActivate, ExecutionContext, UnauthorizedException } from "@nestjs/common";
import { JwtService } from "@nestjs/jwt";
import { Observable } from "rxjs";
@Injectable()
export class JwtAuthGuard implements CanActivate {
constructor(private readonly jwtService: JwtService) {}
canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
const request = context.switchToHttp().getRequest();
const token = request.headers["authorization"]?.split(" ")[1];
if (!token) {
throw new UnauthorizedException("Token not found");
}
try {
const decoded = this.jwtService.verify(token);
request.user = decoded;
return true;
} catch (error) {
throw new UnauthorizedException("Invalid or expired token");
}
}
}

@ -6,6 +6,7 @@ import { User } from './entities/user.entity';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { PassportModule } from '@nestjs/passport';
import { JwtModule } from '@nestjs/jwt';
import { JwtAuthGuard } from 'src/guard/auth.guard';
@Module({
@ -25,6 +26,6 @@ import { JwtModule } from '@nestjs/jwt';
}),
],
controllers: [UsersController],
providers: [UsersService],
providers: [UsersService,JwtAuthGuard],
})
export class UsersModule {}

Loading…
Cancel
Save