]> source.dussan.org Git - gitea.git/commitdiff
Fix 500 when deleting account with incorrect password or unsupported login type ...
authorLunny Xiao <xiaolunwen@gmail.com>
Fri, 8 Mar 2024 14:43:57 +0000 (22:43 +0800)
committerGitHub <noreply@github.com>
Fri, 8 Mar 2024 14:43:57 +0000 (15:43 +0100)
Fix #26210
Backport #29579

Co-authored-by: Jason Song <i@wolfogre.com>
options/locale/locale_en-US.ini
routers/web/user/setting/account.go

index c5b576751d2afa473132369b7c8c30e856ab3161..f9a51ec3b08a597d8138b8dfb3cd68c9dd29e95e 100644 (file)
@@ -567,6 +567,8 @@ enterred_invalid_repo_name = The repository name you entered is incorrect.
 enterred_invalid_org_name = The organization name you entered is incorrect.
 enterred_invalid_owner_name = The new owner name is not valid.
 enterred_invalid_password = The password you entered is incorrect.
+unset_password = The login user has not set the password.
+unsupported_login_type = The login type is not supported to delete account.
 user_not_exist = The user does not exist.
 team_not_exist = The team does not exist.
 last_org_owner = You cannot remove the last user from the 'owners' team. There must be at least one owner for an organization.
index 266f86fc9404789bf1b145cc6614052e9a768cde..4dcd3dbb3570c775a44faeb5cbb3df433091d749 100644 (file)
@@ -19,6 +19,8 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/web"
        "code.gitea.io/gitea/services/auth"
+       "code.gitea.io/gitea/services/auth/source/db"
+       "code.gitea.io/gitea/services/auth/source/smtp"
        "code.gitea.io/gitea/services/forms"
        "code.gitea.io/gitea/services/mailer"
        "code.gitea.io/gitea/services/user"
@@ -236,11 +238,24 @@ func DeleteAccount(ctx *context.Context) {
        ctx.Data["PageIsSettingsAccount"] = true
 
        if _, _, err := auth.UserSignIn(ctx, ctx.Doer.Name, ctx.FormString("password")); err != nil {
-               if user_model.IsErrUserNotExist(err) {
+               switch {
+               case user_model.IsErrUserNotExist(err):
+                       loadAccountData(ctx)
+
+                       ctx.RenderWithErr(ctx.Tr("form.user_not_exist"), tplSettingsAccount, nil)
+               case errors.Is(err, smtp.ErrUnsupportedLoginType):
+                       loadAccountData(ctx)
+
+                       ctx.RenderWithErr(ctx.Tr("form.unsupported_login_type"), tplSettingsAccount, nil)
+               case errors.As(err, &db.ErrUserPasswordNotSet{}):
+                       loadAccountData(ctx)
+
+                       ctx.RenderWithErr(ctx.Tr("form.unset_password"), tplSettingsAccount, nil)
+               case errors.As(err, &db.ErrUserPasswordInvalid{}):
                        loadAccountData(ctx)
 
                        ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_password"), tplSettingsAccount, nil)
-               } else {
+               default:
                        ctx.ServerError("UserSignIn", err)
                }
                return