diff --git a/app/package-lock.json b/app/package-lock.json index 57349c3..99dba0f 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@authorizerdev/authorizer-react": "0.7.0", + "@authorizerdev/authorizer-react": "0.8.0", "@types/react": "^17.0.15", "@types/react-dom": "^17.0.9", "esbuild": "^0.12.17", @@ -35,9 +35,9 @@ } }, "node_modules/@authorizerdev/authorizer-react": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.7.0.tgz", - "integrity": "sha512-cAxUhodftIveSQt+rFuEA0CxjmbpVfE43ioZBwBxqWEuJHPdPH7bohOQRgTyA2xb3QVnh7kr607Tau13DO7qUA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.8.0.tgz", + "integrity": "sha512-178XWGEPsovy3f6Yi2Llh6kFmjdf3ZrkIsqIAKEGPhZawV/1sA6v+4FZp7ReuCxsCelckFFQUnPR8P7od+2HeA==", "dependencies": { "@authorizerdev/authorizer-js": "^0.3.0", "final-form": "^4.20.2", @@ -837,9 +837,9 @@ } }, "@authorizerdev/authorizer-react": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.7.0.tgz", - "integrity": "sha512-cAxUhodftIveSQt+rFuEA0CxjmbpVfE43ioZBwBxqWEuJHPdPH7bohOQRgTyA2xb3QVnh7kr607Tau13DO7qUA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-0.8.0.tgz", + "integrity": "sha512-178XWGEPsovy3f6Yi2Llh6kFmjdf3ZrkIsqIAKEGPhZawV/1sA6v+4FZp7ReuCxsCelckFFQUnPR8P7od+2HeA==", "requires": { "@authorizerdev/authorizer-js": "^0.3.0", "final-form": "^4.20.2", diff --git a/app/src/App.tsx b/app/src/App.tsx index de1c9c7..58ec66a 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -6,6 +6,9 @@ import Root from './Root'; export default function App() { // @ts-ignore const globalState: Record = window['__authorizer__']; + if (globalState.state) { + sessionStorage.setItem('authorizer_state', globalState.state); + } return (
{ if (token) { + const state = sessionStorage.getItem('authorizer_state')?.trim(); const url = new URL(config.redirectURL || '/app'); if (url.origin !== window.location.origin) { - window.location.href = config.redirectURL || '/app'; + console.log({ x: `${config.redirectURL || '/app'}?state=${state}` }); + sessionStorage.removeItem('authorizer_state'); + window.location.replace( + `${config.redirectURL || '/app'}?state=${state}` + ); } } return () => {}; diff --git a/server/handlers/app.go b/server/handlers/app.go index 483b8e1..06cad5b 100644 --- a/server/handlers/app.go +++ b/server/handlers/app.go @@ -18,6 +18,7 @@ import ( type State struct { AuthorizerURL string `json:"authorizerURL"` RedirectURL string `json:"redirectURL"` + State string `json:"state"` } // AppHandler is the handler for the /app route @@ -80,6 +81,7 @@ func AppHandler() gin.HandlerFunc { "data": map[string]string{ "authorizerURL": stateObj.AuthorizerURL, "redirectURL": stateObj.RedirectURL, + "state": stateObj.State, "organizationName": envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyOrganizationName), "organizationLogo": envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyOrganizationLogo), }, diff --git a/server/handlers/authorize.go b/server/handlers/authorize.go index 9dafafe..1ef6fbc 100644 --- a/server/handlers/authorize.go +++ b/server/handlers/authorize.go @@ -51,7 +51,7 @@ func AuthorizeHandler() gin.HandlerFunc { isQuery := responseMode == "query" hostname := utils.GetHost(gc) - loginRedirectState := crypto.EncryptB64(`{"authorizerURL":"` + hostname + `","redirectURL":"` + redirectURI + `"}`) + loginRedirectState := crypto.EncryptB64(`{"authorizerURL":"` + hostname + `","redirectURL":"` + redirectURI + `", "state":"` + state + `"}`) loginURL := "/app?state=" + loginRedirectState if clientID == "" {