saveinmed/backend-nest/src/auth/strategies/refresh-token.strategy.ts
2025-12-17 14:50:19 -03:00

25 lines
934 B
TypeScript

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';
import { FastifyRequest } from 'fastify';
import { JwtPayload } from '../types/jwt-payload.type';
@Injectable()
export class RefreshTokenStrategy extends PassportStrategy(Strategy, 'jwt-refresh') {
constructor(configService: ConfigService) {
super({
jwtFromRequest: ExtractJwt.fromExtractors([
(request: FastifyRequest) => request?.cookies?.['refresh_token'] || null,
]),
secretOrKey: configService.get<string>('JWT_REFRESH_SECRET') || 'refresh-secret',
passReqToCallback: true,
ignoreExpiration: false,
});
}
async validate(request: FastifyRequest, payload: JwtPayload) {
const refreshToken = request.cookies?.['refresh_token'];
return { ...payload, refreshToken };
}
}