From 3ed9961d4e9abb26c7146fd02938253923281961 Mon Sep 17 00:00:00 2001 From: stevereis <stevereis93@gmail.com> Date: Tue, 2 Nov 2021 18:18:31 +0100 Subject: [PATCH] Fix persistence auth --- .../interceptors/headers.interceptor.ts | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/api/src/engine/interceptors/headers.interceptor.ts b/api/src/engine/interceptors/headers.interceptor.ts index c51b5ca..9b28e49 100644 --- a/api/src/engine/interceptors/headers.interceptor.ts +++ b/api/src/engine/interceptors/headers.interceptor.ts @@ -1,13 +1,8 @@ import { HttpService } from '@nestjs/axios'; -import { - Injectable, - NestInterceptor, - ExecutionContext, - CallHandler, -} from '@nestjs/common'; +import { Injectable, NestInterceptor, CallHandler } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; import { IncomingMessage } from 'http'; -import { Observable } from 'rxjs'; +import { Observable, tap } from 'rxjs'; @Injectable() export class HeadersInterceptor implements NestInterceptor { @@ -16,21 +11,35 @@ export class HeadersInterceptor implements NestInterceptor { intercept(context: GqlExecutionContext, next: CallHandler): Observable<any> { // cleaner : add only the auth header (should find the name) + const keys = ['cookie', 'x-xsrf-token']; + let headers = {}; + switch (context.getType()) { case 'http': { const ctx = context.switchToHttp(); const request = ctx.getRequest<Request>(); - this.httpService.axiosRef.defaults.headers = request.headers; + headers = request.headers; break; } case 'graphql': { const ctx = GqlExecutionContext.create(context); const req: IncomingMessage = ctx.getContext().req; - this.httpService.axiosRef.defaults.headers = req.headers; + headers = req.headers; break; } } - return next.handle(); + Object.keys(headers) + .filter((key) => keys.includes(key)) + .map((key) => key.toLowerCase()) + .forEach((key) => { + this.httpService.axiosRef.defaults.headers.common[key] = headers[key]; + }); + + return next.handle().pipe( + tap(() => { + this.httpService.axiosRef.defaults.headers.common = {}; //cleaning request + }), + ); } } -- GitLab