]> source.dussan.org Git - gitea.git/commitdiff
Improve error feedback for duplicate deploy keys (#13112)
authorChris Shyi <chrisshyi13@gmail.com>
Mon, 12 Oct 2020 13:44:56 +0000 (21:44 +0800)
committerGitHub <noreply@github.com>
Mon, 12 Oct 2020 13:44:56 +0000 (14:44 +0100)
Instead of a generic HTTP 500 error page, a flash message is rendered with the deploy key page template to inform the user that a key with the intended title already exists.

Fixes #13110

models/error.go
routers/api/v1/repo/key.go
routers/repo/setting.go

index 1cab19aafdb31c5540b2da08973603355cad2638..364924c9965568cf74afebb7c8a92b266d9be97b 100644 (file)
@@ -547,7 +547,7 @@ func IsErrDeployKeyNameAlreadyUsed(err error) bool {
 }
 
 func (err ErrDeployKeyNameAlreadyUsed) Error() string {
-       return fmt.Sprintf("public key already exists [repo_id: %d, name: %s]", err.RepoID, err.Name)
+       return fmt.Sprintf("public key with name already exists [repo_id: %d, name: %s]", err.RepoID, err.Name)
 }
 
 //    _____                                   ___________     __
index 5d63a25d64ba994ee2d461b892db35ffea3a9560..3d16ae6d4055af2ce254c9ca09979e6a6ab8b75b 100644 (file)
@@ -177,6 +177,8 @@ func HandleAddKeyError(ctx *context.APIContext, err error) {
                ctx.Error(http.StatusUnprocessableEntity, "", "Key content has been used as non-deploy key")
        case models.IsErrKeyNameAlreadyUsed(err):
                ctx.Error(http.StatusUnprocessableEntity, "", "Key title has been used")
+       case models.IsErrDeployKeyNameAlreadyUsed(err):
+               ctx.Error(http.StatusUnprocessableEntity, "", "A key with the same name already exists")
        default:
                ctx.Error(http.StatusInternalServerError, "AddKey", err)
        }
index ca222375fbec191989d452fc22a1f51326ff6c15..1b75522958f0482218848a530ed9398cd9ef544f 100644 (file)
@@ -885,6 +885,9 @@ func DeployKeysPost(ctx *context.Context, form auth.AddKeyForm) {
                case models.IsErrKeyNameAlreadyUsed(err):
                        ctx.Data["Err_Title"] = true
                        ctx.RenderWithErr(ctx.Tr("repo.settings.key_name_used"), tplDeployKeys, &form)
+               case models.IsErrDeployKeyNameAlreadyUsed(err):
+                       ctx.Data["Err_Title"] = true
+                       ctx.RenderWithErr(ctx.Tr("repo.settings.key_name_used"), tplDeployKeys, &form)
                default:
                        ctx.ServerError("AddDeployKey", err)
                }