From 37bccb0e1ca03b9bbc606e3903cc3c4babf414ae Mon Sep 17 00:00:00 2001 From: deepshekhardas Date: Tue, 18 Aug 2026 19:55:37 +0530 Subject: [PATCH 1/2] fix(external): use email_address_not_provided instead of 500 when provider omits email (fixes #2583) --- internal/api/external.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/external.go b/internal/api/external.go index 14bdfe087b..acf352fdd3 100644 --- a/internal/api/external.go +++ b/internal/api/external.go @@ -182,7 +182,7 @@ func (a *API) internalExternalProviderCallback(w http.ResponseWriter, r *http.Re userData := data.userData if len(userData.Emails) == 0 && !emailOptional { - return apierrors.NewInternalServerError("Error getting user email from external provider") + return apierrors.NewUnprocessableEntityError(apierrors.ErrorCodeEmailAddressNotProvided, "Error getting user email from external provider") } userData.Metadata.EmailVerified = false From 65ba3147d816aac2b8e530ea9a936ba54362b838 Mon Sep 17 00:00:00 2001 From: deepshekhardas Date: Tue, 18 Aug 2026 19:57:35 +0530 Subject: [PATCH 2/2] fix(identity): update last_sign_in_at on subsequent external sign-ins (fixes #2563) --- internal/api/external.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/api/external.go b/internal/api/external.go index acf352fdd3..8ed87ff9d6 100644 --- a/internal/api/external.go +++ b/internal/api/external.go @@ -384,7 +384,9 @@ func (a *API) createAccountFromExternalIdentity(tx *storage.Connection, r *http. user = decision.User identity = decision.Identities[0] + now := time.Now() identity.IdentityData = identityData + identity.LastSignInAt = &now if terr = tx.UpdateOnly(identity, "identity_data", "last_sign_in_at"); terr != nil { return 0, nil, terr }