From 90a5c49b0eb9d08e9ec52ec7bd84e40aa4b672ee Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 7 Oct 2021 13:30:49 +0200 Subject: [PATCH] auth-keycloak: wait for the user entity to load before switching to "logged-in" This way we can depend on the roles being available when the login is done. --- packages/auth/src/auth-keycloak.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/auth/src/auth-keycloak.js b/packages/auth/src/auth-keycloak.js index a8884b34..85aefa81 100644 --- a/packages/auth/src/auth-keycloak.js +++ b/packages/auth/src/auth-keycloak.js @@ -27,6 +27,7 @@ export class AuthKeycloak extends AdapterLitElement { this.entryPointUrl = ''; this._user = null; this._userId = ""; + this._authenticated = false; this._loginStatus = LoginStatus.UNKNOWN; this.requestedLoginStatus = LoginStatus.UNKNOWN; this._i18n = createInstance(); @@ -110,6 +111,7 @@ export class AuthKeycloak extends AdapterLitElement { async _onKCChanged(event) { const kc = event.detail; + this._authenticated = kc.authenticated; if (kc.authenticated) { let tokenChanged = (this.token !== kc.token); this.name = kc.idTokenParsed.name; @@ -125,7 +127,9 @@ export class AuthKeycloak extends AdapterLitElement { this._user = user; } } - this._setLoginStatus(LoginStatus.LOGGED_IN, tokenChanged || userChanged); + if (this._user !== null) { + this._setLoginStatus(LoginStatus.LOGGED_IN, tokenChanged || userChanged); + } } else { if (this._loginStatus === LoginStatus.LOGGED_IN) { this._setLoginStatus(LoginStatus.LOGGING_OUT); @@ -211,8 +215,9 @@ export class AuthKeycloak extends AdapterLitElement { } else if (this.tryLogin) { this._setLoginStatus(LoginStatus.LOGGING_IN); await this._kcwrapper.tryLogin(); - if (this._loginStatus === LoginStatus.LOGGING_IN) + if (!this._authenticated) { this._setLoginStatus(LoginStatus.LOGGED_OUT); + } } else { this._setLoginStatus(LoginStatus.LOGGED_OUT); } -- GitLab