Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 1x 1x 1x 1x 1x 1x 10x 10x 10x 6x 5x 2x 3x | import { Injectable, UnauthorizedException } from "@nestjs/common"; import { PassportStrategy } from "@nestjs/passport"; import { ExtractJwt, Strategy } from "passport-jwt"; import { ConfigService } from "@nestjs/config"; import { JwtPayload } from "@calendar-todo/shared-types"; import { UserService } from "../../users/user.service"; import { User } from "../../users/user.entity"; @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { constructor( private readonly configService: ConfigService, private readonly userService: UserService, ) { super({ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), ignoreExpiration: false, secretOrKey: configService.get<string>("JWT_SECRET") || "fallback-secret", }); } async validate(payload: JwtPayload): Promise<User> { const user = await this.userService.findById(payload.sub); if (!user || !user.isActive) { throw new UnauthorizedException("User not found or inactive"); } return user; } } |