BE/src/interceptors/logout.interceptor.ts
2025-06-18 17:15:21 +05:30

41 lines
1.0 KiB
TypeScript

// 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<any> {
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();
}
}