import { Injectable } from '@nestjs/common' import { PassportStrategy } from '@nestjs/passport' import { ExtractJwt, Strategy } from 'passport-jwt' import { ConfigService } from '@nestjs/config' import { UserRole } from '@mp-pilates/shared' import { JwtPayload } from './auth.service' export interface AuthenticatedUser { userId: string role: UserRole } @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { constructor(configService: ConfigService) { super({ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), ignoreExpiration: false, secretOrKey: configService.getOrThrow('JWT_SECRET'), }) } validate(payload: JwtPayload): AuthenticatedUser { return { userId: payload.sub, role: payload.role, } } }