// backend/src/modules/auth/strategies/jwt.strategy.ts import { Strategy } from 'passport-jwt'; import { PassportStrategy } from '@nestjs/passport'; import { Injectable, UnauthorizedException } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { PrismaService } from '../../../../prisma/prisma.service'; import { Request } from 'express'; @Injectable() export class JwtStrategy extends PassportStrategy(Strategy) { constructor( private configService: ConfigService, private prisma: PrismaService, ) { super({ jwtFromRequest: (req: Request) => { return req?.cookies?.accessToken; // ✅ READ FROM COOKIE }, ignoreExpiration: false, secretOrKey: configService.get('JWT_SECRET'), }); } async validate(payload: any) { const user = await this.prisma.user.findUnique({ where: { id: payload.sub }, }); if (!user) { throw new UnauthorizedException(); } const { passwordHash, ...result } = user; return { ...result, organizationId: payload.organizationId, }; } }