From f0bc5697977d9d82a43665604fa24aaee3617c9e Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 6 Jan 2022 14:18:23 +0600 Subject: [PATCH] fix: read flag from claims --- .../dev-tenant/rules/onboardingChecklist.js | 4 +- web-assets/js/setupAuth0WithRedirect.js | 102 ++++++++++-------- 2 files changed, 60 insertions(+), 46 deletions(-) diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index a30cd7d..cda90ed 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -95,7 +95,7 @@ function (user, context, callback) { if (data.length === 0) { // User doesn't have any traits with traitId onboarding_checklist and should be shown the onboarding wizard - user.show_onboarding_wizard = true; + context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'show_onboarding_wizard'] = false; console.log('rule:onboarding-checklist:Setting show_onboarding_wizard to true', user); return callback(null, user, context); } @@ -128,7 +128,7 @@ function (user, context, callback) { // All checks failed - indicating user newly registered and needs to be shown the onboarding wizard console.log('rule:onboarding-checklist: set show_onboarding_wizard', user); - user.show_onboarding_wizard = true; + context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'show_onboarding_wizard'] = false; return callback(null, user, context); } catch (e) { console.log("rule:onboarding-checklist:Error in fetching onboarding_checklist", e); diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 46b9e1f..2e8c010 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -263,59 +263,73 @@ const authSetup = function () { } const storeToken = function () { - auth0.getUser().then(function (user) { - auth0.getIdTokenClaims().then(function (claims) { - idToken = claims.__raw; - let userActive = false; + auth0.getIdTokenClaims().then(function (claims) { + idToken = claims.__raw; + + logger.info('Claims', JSON.stringify(claims)); + + let showOnboardingWizard = false; + Object.keys(claims).forEach(key => { + logger.info('Checking key', key); + if (key.indexOf('show_onboarding_wizard') !== -1) { + if (claims[key]) { + showOnboardingWizard = true; + } + } + }); + + logger.info('Show Onboarding Wizard', showOnboardingWizard); + + let userActive = false; + Object.keys(claims).findIndex(function (key) { + if (key.includes('active')) { + userActive = claims[key]; + return true; + } + return false; + }); + if (userActive) { + let tcsso = ''; Object.keys(claims).findIndex(function (key) { - if (key.includes('active')) { - userActive = claims[key]; + if (key.includes(tcSSOCookie)) { + tcsso = claims[key]; return true; } return false; }); - if (userActive) { - let tcsso = ''; - Object.keys(claims).findIndex(function (key) { - if (key.includes(tcSSOCookie)) { - tcsso = claims[key]; - return true; - } - return false; - }); - logger('Storing token...', true); - try { - const exT = getCookieExpiry(idToken); - if (exT) { - setDomainCookie(tcJWTCookie, idToken, exT); - setDomainCookie(v3JWTCookie, idToken, exT); - setDomainCookie(tcSSOCookie, tcsso, exT); - } else { - setCookie(tcJWTCookie, idToken, cookieExpireIn); - setCookie(v3JWTCookie, idToken, cookieExpireIn); - setCookie(tcSSOCookie, tcsso, cookieExpireIn); - } - } catch (e) { - logger('Error occured in fecthing token expiry time', e.message); + logger('Storing token...', true); + try { + const exT = getCookieExpiry(idToken); + if (exT) { + setDomainCookie(tcJWTCookie, idToken, exT); + setDomainCookie(v3JWTCookie, idToken, exT); + setDomainCookie(tcSSOCookie, tcsso, exT); + } else { + setCookie(tcJWTCookie, idToken, cookieExpireIn); + setCookie(v3JWTCookie, idToken, cookieExpireIn); + setCookie(tcSSOCookie, tcsso, cookieExpireIn); } + } catch (e) { + logger('Error occured in fecthing token expiry time', e.message); + } - if (user.show_onboarding_wizard) { - redirectToOnboardingWizard(); - } else { - // session still active, but app calling login - if (!appUrl && returnAppUrl) { - appUrl = returnAppUrl - } - redirectToApp(); + if (showOnboardingWizard) { + logger.info('Take user to onboarding wizard'); + redirectToOnboardingWizard(); + } else { + // session still active, but app calling login + if (!appUrl && returnAppUrl) { + appUrl = returnAppUrl } - } else { - logger("User active ? ", userActive); - host = registerSuccessUrl; - logout(); + redirectToApp(); } - }).catch(function (e) { - logger("Error in fetching token from auth0: ", e); - }); + } else { + logger("User active ? ", userActive); + host = registerSuccessUrl; + logout(); + } + }).catch(function (e) { + logger("Error in fetching token from auth0: ", e); }); };