From 1b2095361c023f84733b8798c8e73e440eb12400 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 14:28:57 +0600 Subject: [PATCH 01/12] feat: redirect to return all after onboarding is completed --- .../dev-tenant/rules/onboardingChecklist.js | 26 ++++++++++++------- web-assets/js/setupAuth0WithRedirect.js | 15 +++++++---- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index 126c7f5..f6bfc7f 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -105,21 +105,25 @@ 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 - context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'show_onboarding_wizard'] = true; - console.log('rule:onboarding-checklist:Setting show_onboarding_wizard to true'); + context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'onboarding_wizard'] = 'show'; + console.log('rule:onboarding-checklist:Setting onboarding_wizard to show'); return callback(null, user, context); } const onboardingChecklistTrait = data.filter((item) => item.traitId === 'onboarding_checklist')[0].traits; + let override = 'show'; for (let checklistTrait of onboardingChecklistTrait.data) { - if ( - checklistTrait.onboarding_wizard != null && - (checklistTrait.onboarding_wizard.status != null || // any valid status indicates user has already seen onboarding wizard and needn't be shown again. - checklistTrait.onboarding_wizard.skip) // for certain signup routes skip is set to true, and thus onboarding wizard needn't be shown - ) { + if (checklistTrait.onboarding_wizard != null) { + if ( /* checklistTrait.onboarding_wizard.status != null || */ // any valid status indicates user has already seen onboarding wizard and needn't be shown again. + checklistTrait.onboarding_wizard.skip ||// for certain signup routes skip is set to true, and thus onboarding wizard needn't be shown + checklistTrait.onboarding_wizard.override === 'skip') + { return callback(null, user, context); + } else if (checklistTrait.onboarding_wizard.override === 'retUrl') { + override = 'retUrl'; } + } } const profileCompletedData = onboardingChecklistTrait.data.length > 0 ? onboardingChecklistTrait.data[0].profile_completed : null; @@ -137,8 +141,12 @@ 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'); - context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'show_onboarding_wizard'] = true; + console.log('rule:onboarding-checklist: set onboarding_wizard ' + override); + + context.idToken[global.AUTH0_CLAIM_NAMESPACE + 'onboarding_wizard'] = override; + + + 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 5e0d233..5f399f2 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -271,9 +271,9 @@ const authSetup = function () { let showOnboardingWizard = false; Object.keys(claims).forEach(key => { logger('Checking key', key); - if (key.indexOf('show_onboarding_wizard') !== -1) { - if (claims[key]) { - showOnboardingWizard = true; + if (key.indexOf('onboarding_wizard') !== -1) { + if (claims[key] === 'show' || claims[key] === 'override') { + showOnboardingWizard = claims[key]; } } }); @@ -314,9 +314,14 @@ const authSetup = function () { } if (showOnboardingWizard) { - logger('Take user to onboarding wizard'); + logger('Take user to onboarding wizard', showOnboardingWizard); + if (showOnboardingWizard === 'retUrl') { + logger('Need to persist appUrl', returnAppUrl) + setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? + } redirectToOnboardingWizard(); - } else { + } + else { // session still active, but app calling login if (!appUrl && returnAppUrl) { appUrl = returnAppUrl From 17be8d203ec0edb10a225acdf9bac683fdbca076 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 14:46:40 +0600 Subject: [PATCH 02/12] feat: add ability to save retUrl --- web-assets/auth0/dev-tenant/rules/onboardingChecklist.js | 2 +- web-assets/js/setupAuth0WithRedirect.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index f6bfc7f..aeaa92c 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -125,7 +125,7 @@ function (user, context, callback) { } } } - + const profileCompletedData = onboardingChecklistTrait.data.length > 0 ? onboardingChecklistTrait.data[0].profile_completed : null; if (profileCompletedData) { diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 5f399f2..ed2d974 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -233,7 +233,7 @@ const authSetup = function () { const redirectToOnboardingWizard = function () { logger("redirect to onboarding wizard"); - window.location = onboardingWizardUrl; + window.location = onboardingWizardUrl } const redirectToApp = function () { @@ -319,7 +319,7 @@ const authSetup = function () { logger('Need to persist appUrl', returnAppUrl) setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? } - redirectToOnboardingWizard(); + redirectToOnboardingWizard(returnAppUrl); } else { // session still active, but app calling login From 6e0bc0634701cd1c7dff26e1bf5b197c24a9ec5a Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 14:56:16 +0600 Subject: [PATCH 03/12] ci: deploy to dev --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index f1e812a..3f8a712 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -71,6 +71,7 @@ workflows: only: - dev - hotfix/resendActivationEmail + - feat/plat-320 # Production builds are exectuted only on tagged commits to the # master branch. From 6b1f57592eeb041a21dab0047770447f3d0dcc61 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 15:07:24 +0600 Subject: [PATCH 04/12] fix: typo --- web-assets/auth0/dev-tenant/rules/onboardingChecklist.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index aeaa92c..4debf1a 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -120,8 +120,8 @@ function (user, context, callback) { checklistTrait.onboarding_wizard.override === 'skip') { return callback(null, user, context); - } else if (checklistTrait.onboarding_wizard.override === 'retUrl') { - override = 'retUrl'; + } else if (checklistTrait.onboarding_wizard.override === 'useRetUrl') { + override = 'useRetUrl'; } } } From 58e95cd325006764824554fb7f6d7a0b485f7d52 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 17:47:36 +0600 Subject: [PATCH 05/12] fix: typo --- web-assets/js/setupAuth0WithRedirect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index ed2d974..75b1c5c 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -315,7 +315,7 @@ const authSetup = function () { if (showOnboardingWizard) { logger('Take user to onboarding wizard', showOnboardingWizard); - if (showOnboardingWizard === 'retUrl') { + if (showOnboardingWizard === 'useRetUrl') { logger('Need to persist appUrl', returnAppUrl) setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? } From 50185c5829c453e1942b4621e7b3bdd77655d12a Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 17:54:17 +0600 Subject: [PATCH 06/12] fix: typo --- web-assets/js/setupAuth0WithRedirect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 75b1c5c..5f2f4c8 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -272,7 +272,7 @@ const authSetup = function () { Object.keys(claims).forEach(key => { logger('Checking key', key); if (key.indexOf('onboarding_wizard') !== -1) { - if (claims[key] === 'show' || claims[key] === 'override') { + if (claims[key] === 'show' || claims[key] === 'useRetUrl') { showOnboardingWizard = claims[key]; } } From 8a7af15d47360a09a4d8cea86962bc0c53ee5fc9 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 19:02:06 +0600 Subject: [PATCH 07/12] logs: add logs --- web-assets/js/setupAuth0WithRedirect.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 5f2f4c8..1c16629 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -47,6 +47,9 @@ const authSetup = function () { let returnAppUrl = handleSpecificReturnUrl(qs['retUrl'], 'retUrl'); let appUrl = qs['appUrl'] || false; + console.log('returnAppUrl', returnAppUrl); + console.log('appUrl', appUrl); + if (utmSource && (utmSource != 'undefined') && (enterpriseCustomers.indexOf(utmSource) > -1)) { @@ -316,7 +319,7 @@ const authSetup = function () { if (showOnboardingWizard) { logger('Take user to onboarding wizard', showOnboardingWizard); if (showOnboardingWizard === 'useRetUrl') { - logger('Need to persist appUrl', returnAppUrl) + logger('Need to persist appUrl', returnAppUrl, appUrl); setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? } redirectToOnboardingWizard(returnAppUrl); From 89d7938db85875454a12e582d09cdeeb27c1076d Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 19:34:15 +0600 Subject: [PATCH 08/12] add logs --- web-assets/js/setupAuth0WithRedirect.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 1c16629..68cc687 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -321,6 +321,7 @@ const authSetup = function () { if (showOnboardingWizard === 'useRetUrl') { logger('Need to persist appUrl', returnAppUrl, appUrl); setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? + logger('qs values', JSON.stringify(qs)); } redirectToOnboardingWizard(returnAppUrl); } From 96baccd5140915f006940c4ddfb0fb774d2e5c66 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 16 Feb 2022 19:39:59 +0600 Subject: [PATCH 09/12] fix: persist appUrl --- web-assets/js/setupAuth0WithRedirect.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 68cc687..afea0f3 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -319,9 +319,7 @@ const authSetup = function () { if (showOnboardingWizard) { logger('Take user to onboarding wizard', showOnboardingWizard); if (showOnboardingWizard === 'useRetUrl') { - logger('Need to persist appUrl', returnAppUrl, appUrl); - setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? - logger('qs values', JSON.stringify(qs)); + setCookie('returnAfterOnboard', qs['appUrl'] || qs['retUrl']) // TODO: use localStorage instead? } redirectToOnboardingWizard(returnAppUrl); } From 90dda14316ab52086db69a84941b339d7d4a26b0 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 17 Feb 2022 02:19:08 +0600 Subject: [PATCH 10/12] fix: already seen/completed test --- web-assets/auth0/dev-tenant/rules/onboardingChecklist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index 4debf1a..f630b35 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -115,7 +115,7 @@ function (user, context, callback) { for (let checklistTrait of onboardingChecklistTrait.data) { if (checklistTrait.onboarding_wizard != null) { - if ( /* checklistTrait.onboarding_wizard.status != null || */ // any valid status indicates user has already seen onboarding wizard and needn't be shown again. + if ( checklistTrait.onboarding_wizard.status !== 'pending_at_user' || // any non pending_at_user status indicates OB was either seen or completed and can be skipped checklistTrait.onboarding_wizard.skip ||// for certain signup routes skip is set to true, and thus onboarding wizard needn't be shown checklistTrait.onboarding_wizard.override === 'skip') { From bc016b88c47c6b81d8fba347cede7c9196380451 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 17 Feb 2022 09:59:02 +0600 Subject: [PATCH 11/12] feat: redirect to return all after onboarding is completed --- .circleci/config.yml | 1 + .../auth0/dev-tenant/rules/onboardingChecklist.js | 6 +++--- web-assets/js/setupAuth0WithRedirect.js | 10 ++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f1e812a..3f8a712 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -71,6 +71,7 @@ workflows: only: - dev - hotfix/resendActivationEmail + - feat/plat-320 # Production builds are exectuted only on tagged commits to the # master branch. diff --git a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js index aeaa92c..f630b35 100644 --- a/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js +++ b/web-assets/auth0/dev-tenant/rules/onboardingChecklist.js @@ -115,13 +115,13 @@ function (user, context, callback) { for (let checklistTrait of onboardingChecklistTrait.data) { if (checklistTrait.onboarding_wizard != null) { - if ( /* checklistTrait.onboarding_wizard.status != null || */ // any valid status indicates user has already seen onboarding wizard and needn't be shown again. + if ( checklistTrait.onboarding_wizard.status !== 'pending_at_user' || // any non pending_at_user status indicates OB was either seen or completed and can be skipped checklistTrait.onboarding_wizard.skip ||// for certain signup routes skip is set to true, and thus onboarding wizard needn't be shown checklistTrait.onboarding_wizard.override === 'skip') { return callback(null, user, context); - } else if (checklistTrait.onboarding_wizard.override === 'retUrl') { - override = 'retUrl'; + } else if (checklistTrait.onboarding_wizard.override === 'useRetUrl') { + override = 'useRetUrl'; } } } diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index ed2d974..59c4689 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -47,6 +47,9 @@ const authSetup = function () { let returnAppUrl = handleSpecificReturnUrl(qs['retUrl'], 'retUrl'); let appUrl = qs['appUrl'] || false; + console.log('returnAppUrl', returnAppUrl); + console.log('appUrl', appUrl); + if (utmSource && (utmSource != 'undefined') && (enterpriseCustomers.indexOf(utmSource) > -1)) { @@ -272,7 +275,7 @@ const authSetup = function () { Object.keys(claims).forEach(key => { logger('Checking key', key); if (key.indexOf('onboarding_wizard') !== -1) { - if (claims[key] === 'show' || claims[key] === 'override') { + if (claims[key] === 'show' || claims[key] === 'useRetUrl') { showOnboardingWizard = claims[key]; } } @@ -315,9 +318,8 @@ const authSetup = function () { if (showOnboardingWizard) { logger('Take user to onboarding wizard', showOnboardingWizard); - if (showOnboardingWizard === 'retUrl') { - logger('Need to persist appUrl', returnAppUrl) - setCookie('returnAfterOnboard', returnAppUrl) // TODO: use localStorage instead? + if (showOnboardingWizard === 'useRetUrl') { + setCookie('returnAfterOnboard', qs['appUrl'] || qs['retUrl']) } redirectToOnboardingWizard(returnAppUrl); } From c7855b213cde7d9c5cb44c840621eaa07960055e Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Thu, 17 Feb 2022 14:54:17 +0600 Subject: [PATCH 12/12] fix: remove logs --- web-assets/js/setupAuth0WithRedirect.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/web-assets/js/setupAuth0WithRedirect.js b/web-assets/js/setupAuth0WithRedirect.js index 59c4689..b6404b7 100644 --- a/web-assets/js/setupAuth0WithRedirect.js +++ b/web-assets/js/setupAuth0WithRedirect.js @@ -47,9 +47,6 @@ const authSetup = function () { let returnAppUrl = handleSpecificReturnUrl(qs['retUrl'], 'retUrl'); let appUrl = qs['appUrl'] || false; - console.log('returnAppUrl', returnAppUrl); - console.log('appUrl', appUrl); - if (utmSource && (utmSource != 'undefined') && (enterpriseCustomers.indexOf(utmSource) > -1)) {