BE/src/interceptors/logout.interceptor.ts

41 lines
1.0 KiB
TypeScript
Raw Normal View History

2025-06-16 15:53:15 +05:30
// refresh-token.interceptor.ts
import {
Injectable,
NestInterceptor,
ExecutionContext,
CallHandler,
} from '@nestjs/common';
2025-06-18 17:15:21 +05:30
import { Observable, of } from 'rxjs';
2025-06-16 15:53:15 +05:30
@Injectable()
export class LogoutInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const request = context.switchToHttp().getRequest();
2025-06-18 17:15:21 +05:30
const response = context.switchToHttp().getResponse();
2025-06-16 15:53:15 +05:30
const refreshToken = request.cookies?.refresh_token;
if (!refreshToken) {
2025-06-18 17:15:21 +05:30
// 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);
2025-06-16 15:53:15 +05:30
}
// Attach refresh token to request object for later use
request.user = {
...(request.user || {}),
refreshToken,
};
return next.handle();
}
}