diff --git a/Stripe/Link2FAViewController.swift b/Stripe/Link2FAViewController.swift index 77821572077..7d37d7557f8 100644 --- a/Stripe/Link2FAViewController.swift +++ b/Stripe/Link2FAViewController.swift @@ -95,6 +95,10 @@ final class Link2FAViewController: UIViewController { extension Link2FAViewController: Link2FAViewDelegate { func link2FAViewDidCancel(_ view: Link2FAView) { + // Mark email as logged out to prevent automatically showing + // the 2FA modal in future checkout sessions. + linkAccount.markEmailAsLoggedOut() + completionBlock(.canceled) } diff --git a/Stripe/PaymentSheetLinkAccount.swift b/Stripe/PaymentSheetLinkAccount.swift index 6e01c586997..48cd96b1f19 100644 --- a/Stripe/PaymentSheetLinkAccount.swift +++ b/Stripe/PaymentSheetLinkAccount.swift @@ -312,13 +312,18 @@ class PaymentSheetLinkAccount: PaymentSheetLinkAccountInfoProtocol { // Delete cookie. cookieStore.delete(key: cookieStore.sessionCookieKey) - // Mark email as logged out - if let hashedEmail = email.lowercased().sha256 { - cookieStore.write(key: cookieStore.emailCookieKey, value: hashedEmail) - } + markEmailAsLoggedOut() // Forget current session. self.currentSession = nil } + func markEmailAsLoggedOut() { + guard let hashedEmail = email.lowercased().sha256 else { + return + } + + cookieStore.write(key: cookieStore.emailCookieKey, value: hashedEmail) + } + }