From 4407ff2811a0518f703115c2b2708e9143defbad Mon Sep 17 00:00:00 2001
From: Alexandre Bourlier <alexandre@happy-dev.fr>
Date: Thu, 21 Jun 2018 09:32:07 +0200
Subject: [PATCH] Improved OIDC client connect script

---
 dist/lib/sib-oidc-client.js | 42 +++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 11 deletions(-)

diff --git a/dist/lib/sib-oidc-client.js b/dist/lib/sib-oidc-client.js
index 4cac849b..030b2213 100644
--- a/dist/lib/sib-oidc-client.js
+++ b/dist/lib/sib-oidc-client.js
@@ -16,20 +16,40 @@ sib.oidc._setup = function(settings) {
 }
 
 
+// Retrieve User from sessionStorage, or fetch it
+sib.oidc._getUser = function() {
+  sib.oidc._manager.getUser()
+    .then(function(user) {
+      if (user == null) {
+        sib.oidc._manager.signinRedirectCallback()
+          .then()
+          .catch(function(error) {
+            sib.oidc._manager.signinRedirect({state: "dummy data"})
+              .then()
+              .catch(function(error) {
+                console.log(error);
+              });
+          });
+      }
+      else {
+        sib.oidc.user = user;
+      }
+    })
+    .catch(function(error) {
+      console.log(error);
+    });
+}
+
+
 // Connect to OIDC provider
-sib.oidc.connect = function (settings) {
+sib.oidc._connect = function(settings) {
   sib.oidc._setup(settings);
+  sib.oidc._getUser();
 
-  sib.oidc._manager.signinRedirectCallback()
-    .then()
-    .catch(function(error) {
-      console.log(error);
 
-      sib.oidc._manager.signinRedirect({state: "some data"})
-        .then()
-        .catch(function(error) {
-          console.log(error);
-        });
+  // When user loaded...
+  sib.oidc._manager.events.addUserLoaded(function(user) {
+    sib.oidc._getUser();
   });
 }
 
@@ -37,5 +57,5 @@ sib.oidc.connect = function (settings) {
 // Entry point 
 fetch("./oidc-client-config.json")
   .then(response => response.json())
-  .then(settings => sib.oidc.connect(settings));
+  .then(settings => sib.oidc._connect(settings));
 
-- 
GitLab