diff options
author | 无闻 <u@gogs.io> | 2015-01-22 19:39:35 +0800 |
---|---|---|
committer | 无闻 <u@gogs.io> | 2015-01-22 19:39:35 +0800 |
commit | 161774d4fb61d1c2b28a90812b15d077312083f3 (patch) | |
tree | 993e163f35713461e8b80a8918ff70c197c78f2c /routers/user/setting.go | |
parent | edbfbfa66e451aa5fd899c94ff21ac468f6945bb (diff) | |
parent | 6251626de45a2310b3532176c0fc12c52dbd6e32 (diff) |
Merge pull request #825 from phsmit/ssh2_keys
Implement #798 Flexible ssh-key input
Diffstat (limited to 'routers/user/setting.go')
-rw-r--r-- | routers/user/setting.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/routers/user/setting.go b/routers/user/setting.go index 419e84b3..953e6113 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -325,10 +325,15 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - // Remove newline characters from form.KeyContent - cleanContent := strings.Replace(form.Content, "\n", "", -1) + // Parse openssh style string from form content + content, err := models.ParseKeyString(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(cleanContent); !ok { + if ok, err := models.CheckPublicKeyString(content); !ok { if err == models.ErrKeyUnableVerify { ctx.Flash.Info(ctx.Tr("form.unable_verify_ssh_key")) } else { @@ -341,7 +346,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { k := &models.PublicKey{ OwnerId: ctx.User.Id, Name: form.SSHTitle, - Content: cleanContent, + Content: content, } if err := models.AddPublicKey(k); err != nil { if err == models.ErrKeyAlreadyExist { |