From 31ef0bdc58c820fb462db26bcd4bbe789083df5e Mon Sep 17 00:00:00 2001 From: cyberemissary <25044236+cyberemissary@users.noreply.github.com> Date: Fri, 17 May 2019 16:50:49 -0400 Subject: [PATCH] Cache authorization in local storage. --- Resources/public/init-swagger-ui.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Resources/public/init-swagger-ui.js b/Resources/public/init-swagger-ui.js index 1d73823..8be4223 100644 --- a/Resources/public/init-swagger-ui.js +++ b/Resources/public/init-swagger-ui.js @@ -21,5 +21,30 @@ window.onload = () => { layout: 'StandaloneLayout' }); + const storageKey = 'nelmio_api_auth'; + + // if we have auth in storage use it + if (sessionStorage.getItem(storageKey)) { + try { + ui.authActions.authorize(JSON.parse(sessionStorage.getItem(storageKey))); + } catch (ignored) { + // catch any errors here so it does not stop script execution + } + } + + // hook into authorize to store the auth in local storage when user performs authorization + const currentAuthorize = ui.authActions.authorize; + ui.authActions.authorize = function (payload) { + sessionStorage.setItem(storageKey, JSON.stringify(payload)); + return currentAuthorize(payload); + }; + + // hook into logout to clear auth from storage if user logs out + const currentLogout = ui.authActions.logout; + ui.authActions.logout = function (payload) { + sessionStorage.removeItem(storageKey); + return currentLogout(payload); + }; + window.ui = ui; };