diff options
Diffstat (limited to 'routers/user')
-rw-r--r-- | routers/user/setting.go | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/routers/user/setting.go b/routers/user/setting.go index b31e93a63f..de9af6556b 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -305,7 +305,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - if err = models.DeletePublicKey(&models.PublicKey{Id: id}); err != nil { + if err = models.DeletePublicKey(&models.PublicKey{ID: id}); err != nil { ctx.Handle(500, "DeletePublicKey", err) } else { log.Trace("SSH key deleted: %s", ctx.User.Name) @@ -321,15 +321,8 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - // Parse openssh style string from form content - content, err := models.ParseKeyString(form.Content) + content, err := models.CheckPublicKeyString(form.Content) if err != nil { - ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) - ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") - return - } - - if ok, err := models.CheckPublicKeyString(content); !ok { if err == models.ErrKeyUnableVerify { ctx.Flash.Info(ctx.Tr("form.unable_verify_ssh_key")) } else { @@ -339,21 +332,19 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } } - k := &models.PublicKey{ - OwnerId: ctx.User.Id, - Name: form.SSHTitle, - Content: content, - } - if err := models.AddPublicKey(k); err != nil { - if err == models.ErrKeyAlreadyExist { - ctx.RenderWithErr(ctx.Tr("form.ssh_key_been_used"), SETTINGS_SSH_KEYS, &form) - return + if err = models.AddPublicKey(ctx.User.Id, form.Title, content); err != nil { + switch { + case models.IsErrKeyAlreadyExist(err): + ctx.RenderWithErr(ctx.Tr("settings.ssh_key_been_used"), SETTINGS_SSH_KEYS, &form) + case models.IsErrKeyNameAlreadyUsed(err): + ctx.RenderWithErr(ctx.Tr("settings.ssh_key_name_used"), SETTINGS_SSH_KEYS, &form) + default: + ctx.Handle(500, "AddPublicKey", err) } - ctx.Handle(500, "ssh.AddPublicKey", err) return } else { log.Trace("SSH key added: %s", ctx.User.Name) - ctx.Flash.Success(ctx.Tr("settings.add_key_success")) + ctx.Flash.Success(ctx.Tr("settings.add_key_success", form.Title)) ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") return } |