From e55cd94298195600b9ab6ca446438a17911875c1 Mon Sep 17 00:00:00 2001 From: DacongDA Date: Sat, 29 Mar 2025 21:24:01 +0800 Subject: [PATCH] feat: fix issue that user email is still unverified after signup (#3685) --- controllers/account.go | 5 +++++ controllers/auth.go | 8 ++++++++ controllers/verification.go | 3 ++- object/mfa_sms.go | 3 ++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/controllers/account.go b/controllers/account.go index c92a5c01..af63aecb 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -139,6 +139,8 @@ func (c *ApiController) Signup() { invitationName = invitation.Name } + userEmailVerified := false + if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && authForm.Email != "" { var checkResult *object.VerifyResult checkResult, err = object.CheckVerificationCode(authForm.Email, authForm.EmailCode, c.GetAcceptLanguage()) @@ -150,6 +152,8 @@ func (c *ApiController) Signup() { c.ResponseError(checkResult.Msg) return } + + userEmailVerified = true } var checkPhone string @@ -228,6 +232,7 @@ func (c *ApiController) Signup() { Karma: 0, Invitation: invitationName, InvitationCode: authForm.InvitationCode, + EmailVerified: userEmailVerified, } if len(organization.Tags) > 0 { diff --git a/controllers/auth.go b/controllers/auth.go index 8dd44d6f..5e563166 100644 --- a/controllers/auth.go +++ b/controllers/auth.go @@ -483,6 +483,14 @@ func (c *ApiController) Login() { verificationType = "sms" } else { verificationType = "email" + if !user.EmailVerified { + user.EmailVerified = true + _, err = object.UpdateUser(user.GetId(), user, []string{"email_verified"}, false) + if err != nil { + c.ResponseError(err.Error(), nil) + return + } + } } } else { var application *object.Application diff --git a/controllers/verification.go b/controllers/verification.go index 1fb1f62f..44797d2c 100644 --- a/controllers/verification.go +++ b/controllers/verification.go @@ -436,7 +436,8 @@ func (c *ApiController) ResetEmailOrPhone() { switch destType { case object.VerifyTypeEmail: user.Email = dest - _, err = object.SetUserField(user, "email", user.Email) + user.EmailVerified = true + _, err = object.UpdateUser(user.GetId(), user, []string{"email", "email_verified"}, false) case object.VerifyTypePhone: user.Phone = dest _, err = object.SetUserField(user, "phone", user.Phone) diff --git a/object/mfa_sms.go b/object/mfa_sms.go index aaa6f3c3..eab65b1f 100644 --- a/object/mfa_sms.go +++ b/object/mfa_sms.go @@ -60,7 +60,8 @@ func (mfa *SmsMfa) Enable(user *User) error { columns = append(columns, "mfa_phone_enabled", "phone", "country_code") } else if mfa.MfaType == EmailType { user.MfaEmailEnabled = true - columns = append(columns, "mfa_email_enabled", "email") + user.EmailVerified = true + columns = append(columns, "mfa_email_enabled", "email", "email_verified") } _, err := UpdateUser(user.GetId(), user, columns, false)