From 13655922d85d8d95f414f9ff387c6761740781d7 Mon Sep 17 00:00:00 2001 From: ice-myles <96409608+ice-myles@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:45:49 +0300 Subject: [PATCH] Set email = id on phone migration rollback case if firebase update returns an error. (#100) Set email = id on phone migration rollback case if firebase update returns an error. --- auth/email_link/email_modify.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/auth/email_link/email_modify.go b/auth/email_link/email_modify.go index e8d7e14f..00f2ebf6 100644 --- a/auth/email_link/email_modify.go +++ b/auth/email_link/email_modify.go @@ -16,7 +16,7 @@ import ( "github.com/ice-blockchain/wintr/time" ) -//nolint:funlen // Big rollback logic. +//nolint:funlen,gocognit,nestif,revive // Big rollback logic. func (c *client) handleEmailModification(ctx context.Context, els *emailLinkSignIn, newEmail, oldEmail, notifyEmail string) error { usr := new(users.User) usr.ID = *els.UserID @@ -28,8 +28,13 @@ func (c *client) handleEmailModification(ctx context.Context, els *emailLinkSign if els.Metadata != nil { if firebaseID, hasFirebaseID := (*els.Metadata)[auth.FirebaseIDClaim]; hasFirebaseID { if fErr := server.Auth(ctx).UpdateEmail(ctx, firebaseID.(string), newEmail); fErr != nil { //nolint:forcetypeassert // . + oldEmailVal := oldEmail + if els.PhoneNumberToEmailMigrationUserID != nil && *els.PhoneNumberToEmailMigrationUserID != "" { + oldEmailVal = usr.ID + } + return multierror.Append( //nolint:wrapcheck // . - errors.Wrapf(c.resetEmailModification(ctx, usr.ID, oldEmail), "[reset] resetEmailModification failed for email:%v", oldEmail), + errors.Wrapf(c.resetEmailModification(ctx, usr.ID, oldEmailVal), "[reset] resetEmailModification failed for email:%v", oldEmailVal), errors.Wrapf(fErr, "failed to change email in firebase to:%v fbUserID:%v", newEmail, firebaseID), ).ErrorOrNil() }