Skip to content

Commit d595a8b

Browse files
fix: store pending credential to allow deletion of user
1 parent 0cbc68e commit d595a8b

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public final class AuthService {
107107
public let passwordPrompt: PasswordPromptCoordinator = .init()
108108
public var currentMFARequired: MFARequired?
109109
private var currentMFAResolver: MultiFactorResolver?
110+
private var pendingMFACredential: AuthCredential?
110111

111112
// MARK: - Provider APIs
112113

@@ -234,6 +235,8 @@ public final class AuthService {
234235
if error.code == AuthErrorCode.secondFactorRequired.rawValue {
235236
if let resolver = error
236237
.userInfo[AuthErrorUserInfoMultiFactorResolverKey] as? MultiFactorResolver {
238+
// Preserve the original credential for use after MFA resolution
239+
pendingMFACredential = credentials
237240
return handleMFARequiredError(resolver: resolver)
238241
}
239242
}
@@ -847,12 +850,16 @@ public extension AuthService {
847850

848851
do {
849852
let result = try await resolver.resolveSignIn(with: assertion)
850-
signedInCredential = result.credential
853+
854+
// After MFA resolution, result.credential is nil, so restore the original credential
855+
// that was used before MFA was triggered
856+
signedInCredential = result.credential ?? pendingMFACredential
851857
updateAuthenticationState()
852858

853859
// Clear MFA resolution state
854860
currentMFARequired = nil
855861
currentMFAResolver = nil
862+
pendingMFACredential = nil
856863

857864
} catch {
858865
throw AuthServiceError

0 commit comments

Comments
 (0)