From 14257646c5480881b7a8b96db3ea946d6586860c Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Tue, 2 Nov 2021 18:16:57 +0100
Subject: [PATCH] ajout logout

---
 .../engine/connectors/csv/main.connector.ts   |  4 ++++
 .../connectors/datashield/main.connector.ts   |  4 ++++
 .../connectors/exareme/main.connector.ts      | 22 +++++++++++++------
 .../engine/connectors/local/main.connector.ts |  4 ++++
 api/src/engine/engine.controller.ts           |  5 +++++
 api/src/engine/engine.interfaces.ts           |  2 ++
 6 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/api/src/engine/connectors/csv/main.connector.ts b/api/src/engine/connectors/csv/main.connector.ts
index eedb7ae..05864ad 100644
--- a/api/src/engine/connectors/csv/main.connector.ts
+++ b/api/src/engine/connectors/csv/main.connector.ts
@@ -19,6 +19,10 @@ export default class CSVService implements IEngineService {
     private readonly httpService: HttpService,
   ) {}
 
+  logout() {
+    throw new Error('Method not implemented.');
+  }
+
   getAlgorithms(): Algorithm[] | Promise<Algorithm[]> {
     throw new Error('Method not implemented.');
   }
diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts
index 829147f..4df8aa1 100644
--- a/api/src/engine/connectors/datashield/main.connector.ts
+++ b/api/src/engine/connectors/datashield/main.connector.ts
@@ -11,6 +11,10 @@ import { ExperimentEditInput } from 'src/engine/models/experiment/input/experime
 import { Algorithm } from 'src/engine/models/experiment/algorithm.model';
 
 export default class DataShieldService implements IEngineService {
+  logout(): void {
+    throw new Error('Method not implemented.');
+  }
+
   getAlgorithms(): Algorithm[] | Promise<Algorithm[]> {
     throw new Error('Method not implemented.');
   }
diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts
index b1c789e..35d34e7 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -1,6 +1,11 @@
 import { HttpService } from '@nestjs/axios';
-import { BadRequestException, HttpException, HttpStatus } from '@nestjs/common';
-import { Request } from 'express';
+import {
+  BadRequestException,
+  HttpException,
+  HttpStatus,
+  Res,
+} from '@nestjs/common';
+import { Request, Response } from 'express';
 import { firstValueFrom, map, Observable } from 'rxjs';
 import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
 import { Domain } from 'src/engine/models/domain.model';
@@ -33,6 +38,14 @@ export default class ExaremeService implements IEngineService {
     private readonly httpService: HttpService,
   ) {}
 
+  async logout(@Res() response: Response = undefined) {
+    const path = `${this.options.baseurl}logout`;
+
+    await firstValueFrom(this.httpService.get(path));
+
+    response?.clearCookie('OAuth_Token_Request_State');
+  }
+
   async createExperiment(
     data: ExperimentCreateInput,
     isTransient = false,
@@ -109,11 +122,6 @@ export default class ExaremeService implements IEngineService {
   async getDomains(ids: string[]): Promise<Domain[]> {
     const path = this.options.baseurl + 'pathologies';
 
-    console.log(
-      'connectors headers',
-      this.httpService.axiosRef.defaults.headers,
-    );
-
     try {
       const data = await firstValueFrom(
         this.httpService.get<Pathology[]>(path),
diff --git a/api/src/engine/connectors/local/main.connector.ts b/api/src/engine/connectors/local/main.connector.ts
index 2ff1a44..cb472d9 100644
--- a/api/src/engine/connectors/local/main.connector.ts
+++ b/api/src/engine/connectors/local/main.connector.ts
@@ -11,6 +11,10 @@ import { ExperimentEditInput } from 'src/engine/models/experiment/input/experime
 import { Algorithm } from 'src/engine/models/experiment/algorithm.model';
 
 export default class LocalService implements IEngineService {
+  logout(): void {
+    throw new Error('Method not implemented.');
+  }
+
   getAlgorithms(): Algorithm[] | Promise<Algorithm[]> {
     throw new Error('Method not implemented.');
   }
diff --git a/api/src/engine/engine.controller.ts b/api/src/engine/engine.controller.ts
index fa8a75c..266f1a2 100644
--- a/api/src/engine/engine.controller.ts
+++ b/api/src/engine/engine.controller.ts
@@ -74,4 +74,9 @@ export class EngineController {
   agreeNDA(@Req() request: Request): Observable<string> | string {
     return this.engineService.editActiveUser(request);
   }
+
+  @Get('logout')
+  logout(): void {
+    this.engineService.logout();
+  }
 }
diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts
index e3f68aa..331ffe7 100644
--- a/api/src/engine/engine.interfaces.ts
+++ b/api/src/engine/engine.interfaces.ts
@@ -63,4 +63,6 @@ export interface IEngineService {
   getActiveUser(request: Request): Observable<string> | string;
 
   editActiveUser(request: Request): Observable<string> | string;
+
+  logout(): void;
 }
-- 
GitLab