From ac53e5a9622bd118fffa37684c5b0f894e97b943 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Fri, 2 Feb 2024 16:39:37 -0500 Subject: [PATCH] FIX: Handle old Firefox versions that do not support isConditionalMediationAvailable (#25549) Some versions of Firefox will throw a TypeError when calling PublicKeyCredential.isConditionalMediationAvailable() because the method does not exist. That would previously lead to a "Sorry, an error has occurred." modal when trying to login. This commit fixes the issue by properly checking if the method exists. Since it only affects older Firefox versions, no tests are added. --- app/assets/javascripts/discourse/app/lib/webauthn.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/lib/webauthn.js b/app/assets/javascripts/discourse/app/lib/webauthn.js index 8b453c19027..561ef32c9aa 100644 --- a/app/assets/javascripts/discourse/app/lib/webauthn.js +++ b/app/assets/javascripts/discourse/app/lib/webauthn.js @@ -133,7 +133,8 @@ export async function getPasskeyCredential( // We cannot do a general check because iOS Safari and Chrome in Selenium quietly support the feature // but they do not support the PublicKeyCredential.isConditionalMediationAvailable() method if (mediation === "conditional" && isFirefox) { - const isCMA = await PublicKeyCredential.isConditionalMediationAvailable(); + const isCMA = + (await PublicKeyCredential.isConditionalMediationAvailable?.()) ?? false; if (!isCMA) { return; }