feat: email link sign-in reauthentication flow #1315
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #741
After pressing "delete account" (I trimmed about 1 minute of initial part of video because I left a debugger on which stopped alert popping up immediately):
email-link-reauth.mp4
Email Link Reauthentication Support
Overview
Adds comprehensive email link reauthentication support, allowing users who signed in with email link (passwordless) to reauthenticate for sensitive operations without needing to remember or set a password.
AuthService API Changes
Modified Methods
sendEmailSignInLink(email:isReauth:)isReauth: Bool = falseparameterisReauth: true, stores email for reauthentication flow instead of sign-infalsefor existing sign-in behavior)handleSignInLink(url:)isReauthenticatingflagsignOut()emailLinkReauth,isReauthenticating)New Internal Properties
@AppStorage("is-email-link") private var isEmailLinkSignIn: Bool = false
@AppStorage("email-link-reauth") private var emailLinkReauth: String?
@AppStorage("is-reauthenticating") private var isReauthenticating: Bool = false
AuthServiceError Changes
New Error Case
Updated Enum
Default Views Changes
New View
EmailLinkReauthView.onOpenURLEmailReauthViewandPhoneReauthViewUpdated Views
ReauthenticationCoordinatorshowingEmailLinkReauthandshowingEmailLinkReauthAlertstateconfirmEmailLinkReauth()method.emailLinkreauth context to appropriate UIReauthenticationModifierEmailLinkReauthViewReauthenticationHelpers.swiftwithReauthenticationIfNeededto handleemailLinkReauthenticationRequirederrorBehavior
isEmailLinkSignInflag is set totrueisEmailLinkSignInflagemailLinkReauthenticationRequiredfor email link users,emailReauthenticationRequiredfor email/password usersisReauth: trueparameter