Skip to content

Commit edd5c4e

Browse files
authored
refactor(core): sort available factors (#7776)
1 parent e1a365b commit edd5c4e

File tree

1 file changed

+19
-1
lines changed
  • packages/core/src/routes/experience/classes

1 file changed

+19
-1
lines changed

packages/core/src/routes/experience/classes/mfa.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,25 @@ export class Mfa {
316316
return;
317317
}
318318

319-
const additionalFactors = availableFactors.filter((factor) => !factorsInUser.includes(factor));
319+
const additionalFactors = availableFactors
320+
.filter((factor) => !factorsInUser.includes(factor))
321+
.slice()
322+
.sort((factorA, factorB) => {
323+
// Sort order: webauthn -> totp -> sms -> email -> backup code
324+
const order = [
325+
MfaFactor.WebAuthn,
326+
MfaFactor.TOTP,
327+
MfaFactor.PhoneVerificationCode,
328+
MfaFactor.EmailVerificationCode,
329+
MfaFactor.BackupCode,
330+
];
331+
332+
const indexA = order.indexOf(factorA);
333+
const indexB = order.indexOf(factorB);
334+
335+
// Unrecognized factors at the end
336+
return (indexA === -1 ? order.length : indexA) - (indexB === -1 ? order.length : indexB);
337+
});
320338

321339
// Respect user's choice to skip suggestion for this interaction
322340
if (this.additionalBindingSuggestionSkipped) {

0 commit comments

Comments
 (0)