From 9d86e0a8f696eb82ebff9d77b5fff2fcb5b95d88 Mon Sep 17 00:00:00 2001
From: Florent Lavelle <flavelle@neogeo.fr>
Date: Wed, 24 May 2023 13:35:03 +0000
Subject: [PATCH] Add VUE_APP_EXTERNAL_LOGOUT_URL +
 VUE_APP_EXTERNAL_LOGOUT_METHOD

---
 .gitlab-ci.yml                      |  2 ++
 README.md                           |  2 ++
 src/store/modules/sign-out.store.js | 19 ++++++++++++-------
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f1a3b16..c3fc471 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -53,6 +53,8 @@ build_development:
       VUE_APP_USERGROUP_API_PATH=/fr/usergroup/\n
       VUE_APP_EXTERNAL_LOGIN=true\n
       VUE_APP_EXTERNAL_LOGIN_URL=http://127.0.0.1:80/oidc/authenticate\n
+      VUE_APP_EXTERNAL_LOGOUT_URL=http://127.0.0.1:80/oidc/logout/?redirect_uri=/fr/login/signout\n
+      VUE_APP_EXTERNAL_LOGOUT_METHOD=get\n
       VUE_APP_EXTERNAL_LOGIN_LABEL=Se connecter avec mon compte FooBar\n
       " > .env
     - npm run build
diff --git a/README.md b/README.md
index cfd96dd..d007612 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,8 @@ VUE_APP_LOGIN_API_PASSWORD=CHANGE_ME
 # External auth
 VUE_APP_EXTERNAL_LOGIN=true
 VUE_APP_EXTERNAL_LOGIN_URL=http://127.0.0.1/oidc/authenticate
+VUE_APP_EXTERNAL_LOGOUT_URL=http://127.0.0.1/oidc/logout/?redirect_uri=/fr/login/signout
+VUE_APP_EXTERNAL_LOGOUT_METHOD=get
 VUE_APP_EXTERNAL_LOGIN_LABEL=Connect with...
 ```
 
diff --git a/src/store/modules/sign-out.store.js b/src/store/modules/sign-out.store.js
index b60d81a..9618e38 100644
--- a/src/store/modules/sign-out.store.js
+++ b/src/store/modules/sign-out.store.js
@@ -1,5 +1,6 @@
 import client from '@/api/loginAPI.js';
 import i18n from '@/i18n';
+import axios from 'axios';
 
 const state = {
   logged: null,
@@ -9,11 +10,17 @@ const state = {
 const getters = {
 };
 
-export const GET_SIGNOUT = 'GET_SIGNOUT';
 
 const actions = {
-  [GET_SIGNOUT]: async ({ commit }) => {
-    await client.signOut()
+  GET_SIGNOUT: async ({ commit }) => {
+    const EXTERNAL_LOGOUT_URL = process.env.VUE_APP_EXTERNAL_LOGOUT_URL;
+    const EXTERNAL_LOGOUT_METHOD = process.env.VUE_APP_EXTERNAL_LOGOUT_METHOD;
+    Promise.all([
+      client.signOut(),
+      EXTERNAL_LOGOUT_URL ?
+        axios[EXTERNAL_LOGOUT_METHOD ? EXTERNAL_LOGOUT_METHOD : 'get'](EXTERNAL_LOGOUT_URL) :
+        null
+    ])
       .then(
         () => {
           commit('SET_ERROR', undefined);
@@ -33,18 +40,16 @@ const actions = {
   },
 };
 
-export const SET_ERROR = 'SET_ERROR';
-export const SET_LOGGED = 'SET_LOGGED';
 
 const mutations = {
-  [SET_LOGGED]: (state, value) => {
+  SET_LOGGED: (state, value) => {
     if (value === true) {
       state.logged = true;
     } else {
       state.logged = false;
     }
   },
-  [SET_ERROR]: (state, payload) => {
+  SET_ERROR: (state, payload) => {
     state.error = payload;
   },
 };
-- 
GitLab