From 8ef7f0be74caeadd58142c10f3be4774c8b42b42 Mon Sep 17 00:00:00 2001
From: Florent Lavelle <flavelle@neogeo.fr>
Date: Thu, 26 Jan 2023 16:26:14 +0100
Subject: [PATCH] Add external auth btn (optional)

---
 .gitlab-ci.yml       |  8 ++++++--
 README.md            |  5 +++++
 public/config.js     |  2 +-
 src/views/SignIn.vue | 30 ++++++++++++++++++++++++++++++
 4 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 23dce79..f1a3b16 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -36,7 +36,7 @@ build_development:
     - echo -e "
       NODE_ENV=development\n
       DOMAIN=https://dev.pigma.neogeo.fr/fr\n
-      VUE_APP_DOMAIN=https://dev.pigma.neogeo.fr/\n
+      VUE_APP_DOMAIN=${DOMAIN}\n
       BASE_PATH=/\n
       VUE_APP_BASE_PATH=${BASE_PATH}\n
       VUE_APP_NEXT_DEFAULT=/\n
@@ -50,7 +50,11 @@ build_development:
       VUE_APP_FAVICON_URL=${VUE_APP_DOMAIN}/assets/favicon.png\n
       VUE_APP_LOGIN_API_PATH=/fr/login/\n
       VUE_APP_ORGANISATION_API_PATH=/fr/organisation/\n
-      VUE_APP_USERGROUP_API_PATH=/fr/usergroup/\n" > .env
+      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_LOGIN_LABEL=Se connecter avec mon compte FooBar\n
+      " > .env
     - npm run build
   artifacts:
     paths:
diff --git a/README.md b/README.md
index 0b925df..cfd96dd 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,11 @@ VUE_APP_USERGROUP_API_PATH=/fr/usergroup/
 # AUTH
 VUE_APP_LOGIN_API_USERNAME=admin
 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_LOGIN_LABEL=Connect with...
 ```
 
 ### Compiles and hot-reloads for development
diff --git a/public/config.js b/public/config.js
index 48d791b..ce33b6e 100644
--- a/public/config.js
+++ b/public/config.js
@@ -6,7 +6,7 @@ export default {
     /^\/portail/,
   ],
   client: {
-    name: "Demo",
+    name: "Neogeo",
     email: "contact@neogeo.fr"
   },
   forms: {
diff --git a/src/views/SignIn.vue b/src/views/SignIn.vue
index 7730561..c3659a6 100644
--- a/src/views/SignIn.vue
+++ b/src/views/SignIn.vue
@@ -4,6 +4,23 @@
       <div class="sign-in-header">
         <img alt="logo" :src="logoPath"/>
       </div>
+      <div
+        v-if="externalAuth.enabled"
+        class="sign-in-form"
+      >
+        <h5 class="title">{{ externalAuth.label }}</h5>
+        <form>
+          <div class="form-row">
+            <b-button
+              variant="primary"
+              block
+              @click.prevent="submitExternalAuth"
+            >
+              {{ $t('words.login') }}
+            </b-button>
+          </div>
+        </form>
+      </div>
       <div class="sign-in-form">
         <h5
           v-if="$config.forms.signin.title"
@@ -119,6 +136,10 @@ import {
   mapMutations,
 } from 'vuex';
 
+// const EXTERNAL_LOGIN = process.env.VUE_APP_EXTERNAL_LOGIN;
+// const EXTERNAL_LOGIN_URL = process.env.VUE_APP_EXTERNAL_LOGIN_URL;
+// const EXTERNAL_LOGIN_LABEL = process.env.VUE_APP_EXTERNAL_LOGIN_LABEL
+
 const signInActions = [
   'POST_SIGNIN'
 ];
@@ -134,6 +155,12 @@ export default {
 
   data() {
     return {
+      externalAuth: {
+        enabled: process.env.VUE_APP_EXTERNAL_LOGIN,
+        url: process.env.VUE_APP_EXTERNAL_LOGIN_URL,
+        label: process.env.VUE_APP_EXTERNAL_LOGIN_LABEL
+      },
+
       showPassword: false,
       btnPressed: false,
       form: {
@@ -192,6 +219,9 @@ export default {
       this.btnPressed = true;
       await this.POST_SIGNIN();
     },
+    submitExternalAuth() {
+      window.location.href = this.externalAuth.url;
+    }
   },
 };
 </script>
-- 
GitLab