// refresh-token.interceptor.ts import { Injectable, NestInterceptor, ExecutionContext, CallHandler, } from '@nestjs/common'; import { Observable, of } from 'rxjs'; @Injectable() export class LogoutInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { const request = context.switchToHttp().getRequest(); const response = context.switchToHttp().getResponse(); const refreshToken = request.cookies?.refresh_token; if (!refreshToken) { // Send a custom 200 response when refresh token is missing response.clearCookie('access_token'); response.clearCookie('refresh_token'); response.status(200).json({ statusCode: 200, message: 'Logged-Out successfully', }); // Prevent further handling return of(null); } // Attach refresh token to request object for later use request.user = { ...(request.user || {}), refreshToken, }; return next.handle(); } }