diff --git a/apps/mock-oauth-server/src/index.ts b/apps/mock-oauth-server/src/index.ts index 717535f25..4fdec8fd5 100644 --- a/apps/mock-oauth-server/src/index.ts +++ b/apps/mock-oauth-server/src/index.ts @@ -211,6 +211,11 @@ const loginTemplateSource = ` // Get the form element to submit later const form = document.querySelector('form'); if (!form) return; + let submitted = false; + const submitOnce = () => { + if (submitted) return; + form.requestSubmit(); + }; // Render the list of stored accounts and add direct submission on click. const renderStoredAccounts = () => { @@ -237,7 +242,7 @@ const loginTemplateSource = ` card.addEventListener('click', () => { const selectedEmail = card.getAttribute('data-email') || ''; emailInput.value = selectedEmail; - form.submit(); + submitOnce(); }); }); } else { @@ -247,8 +252,12 @@ const loginTemplateSource = ` renderStoredAccounts(); - // On form submission, store the email if it's not already stored. - form.addEventListener('submit', () => { + form.addEventListener('submit', (e) => { + if (submitted) { + e.preventDefault(); + return; + } + submitted = true; const email = emailInput.value.trim(); if (email && !storedAccounts.includes(email)) { storedAccounts.push(email);