From a65e5f0473bdbe9b4bdfbf410ce2e682181ffe68 Mon Sep 17 00:00:00 2001 From: Lisa Jian Date: Tue, 14 Dec 2021 16:34:59 -0800 Subject: [PATCH] Fill in SAMLResponse nameId for pre-populated users (#3946) A bit of cleanup from https://github.com/firebase/firebase-tools/pull/3927. Widget should fill in the SAMLResponse correctly even for users that were signed in previously. Corresponding internal bug: b/192387796 --- src/emulator/auth/handlers.ts | 2 +- src/emulator/auth/widget_ui.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/emulator/auth/handlers.ts b/src/emulator/auth/handlers.ts index 2ae426a3bb0..5d79581625b 100644 --- a/src/emulator/auth/handlers.ts +++ b/src/emulator/auth/handlers.ts @@ -201,7 +201,7 @@ export function registerHandlers( ${ info.displayName || "(No display name)" } - ${ + ${ info.email || "" } ` diff --git a/src/emulator/auth/widget_ui.ts b/src/emulator/auth/widget_ui.ts index 74f1b303baa..32e3c4e1739 100644 --- a/src/emulator/auth/widget_ui.ts +++ b/src/emulator/auth/widget_ui.ts @@ -158,16 +158,17 @@ var reuseAccountEls = document.querySelectorAll('.js-reuse-account'); if (reuseAccountEls.length) { [].forEach.call(reuseAccountEls, function (el) { var urlEncodedIdToken = el.dataset.idToken; + const decoded = JSON.parse(decodeURIComponent(urlEncodedIdToken)); el.addEventListener('click', function (e) { e.preventDefault(); - finishWithUser(urlEncodedIdToken); + finishWithUser(urlEncodedIdToken, decoded.email); }); }); } else { document.querySelector('.js-accounts-help-text').textContent = "No " + formattedProviderId + " accounts exist in the Auth Emulator."; } -function finishWithUser(urlEncodedIdToken) { +function finishWithUser(urlEncodedIdToken, email) { // Use widget URL, but replace all query parameters (no apiKey etc.). var url = window.location.href.split('?')[0]; // Avoid URLSearchParams for browser compatibility. @@ -176,7 +177,6 @@ function finishWithUser(urlEncodedIdToken) { // Save reasonable defaults for SAML providers if (isSamlProvider) { - var email = document.getElementById('email-input').value; url += '&SAMLResponse=' + encodeURIComponent(JSON.stringify({ assertion: { subject: { @@ -234,7 +234,7 @@ document.getElementById('main-form').addEventListener('submit', function(e) { if (screenName) claims.screenName = screenName; if (photoUrl) claims.photoUrl = photoUrl; - finishWithUser(createFakeClaims(claims)); + finishWithUser(createFakeClaims(claims), claims.email); } });