func SettingsSSHKeys(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsUserSettings"] = true ctx.Data["PageIsSettingsSSHKeys"] = true var err error ctx.Data["Keys"], err = models.ListPublicKey(ctx.User.Id) if err != nil { ctx.Handle(500, "ssh.ListPublicKey", err) return } ctx.HTML(200, SETTINGS_SSH_KEYS) }
func SettingSSHKeys(ctx *middleware.Context, form auth.AddSSHKeyForm) { ctx.Data["Title"] = "SSH Keys" ctx.Data["PageIsUserSetting"] = true ctx.Data["IsUserPageSettingSSH"] = true // Delete SSH key. if ctx.Req.Method == "DELETE" || ctx.Query("_method") == "DELETE" { id, err := base.StrTo(ctx.Query("id")).Int64() if err != nil { log.Error("ssh.DelPublicKey: %v", err) ctx.JSON(200, map[string]interface{}{ "ok": false, "err": err.Error(), }) return } if err = models.DeletePublicKey(&models.PublicKey{Id: id}); err != nil { log.Error("ssh.DelPublicKey: %v", err) ctx.JSON(200, map[string]interface{}{ "ok": false, "err": err.Error(), }) } else { log.Trace("%s User SSH key deleted: %s", ctx.Req.RequestURI, ctx.User.LowerName) ctx.JSON(200, map[string]interface{}{ "ok": true, }) } return } // List existed SSH keys. keys, err := models.ListPublicKey(ctx.User.Id) if err != nil { ctx.Handle(500, "ssh.ListPublicKey", err) return } ctx.Data["Keys"] = keys // Add new SSH key. if ctx.Req.Method == "POST" { if ctx.HasError() { ctx.HTML(200, "user/publickey") return } if len(form.KeyContent) < 100 || !strings.HasPrefix(form.KeyContent, "ssh-rsa") { ctx.Flash.Error("SSH key content is not valid.") ctx.Redirect("/user/settings/ssh") return } k := &models.PublicKey{ OwnerId: ctx.User.Id, Name: form.KeyName, Content: form.KeyContent, } if err := models.AddPublicKey(k); err != nil { if err.Error() == models.ErrKeyAlreadyExist.Error() { ctx.RenderWithErr("Public key name has been used", "user/publickey", &form) return } ctx.Handle(500, "ssh.AddPublicKey", err) return } else { log.Trace("%s User SSH key added: %s", ctx.Req.RequestURI, ctx.User.LowerName) ctx.Flash.Success("New SSH Key has been added!") ctx.Redirect("/user/settings/ssh") return } } ctx.HTML(200, "user/publickey") }
func SettingSSHKeys(ctx *middleware.Context, form auth.AddSSHKeyForm) { ctx.Data["Title"] = "SSH Keys" // Delete SSH key. if ctx.Req.Method == "DELETE" || ctx.Query("_method") == "DELETE" { id, err := strconv.ParseInt(ctx.Query("id"), 10, 64) if err != nil { log.Error("ssh.DelPublicKey: %v", err) ctx.JSON(200, map[string]interface{}{ "ok": false, "err": err.Error(), }) return } k := &models.PublicKey{ Id: id, OwnerId: ctx.User.Id, } if err = models.DeletePublicKey(k); err != nil { log.Error("ssh.DelPublicKey: %v", err) ctx.JSON(200, map[string]interface{}{ "ok": false, "err": err.Error(), }) } else { log.Trace("%s User SSH key deleted: %s", ctx.Req.RequestURI, ctx.User.LowerName) ctx.JSON(200, map[string]interface{}{ "ok": true, }) } return } // Add new SSH key. if ctx.Req.Method == "POST" { if hasErr, ok := ctx.Data["HasError"]; ok && hasErr.(bool) { ctx.HTML(200, "user/publickey") return } k := &models.PublicKey{OwnerId: ctx.User.Id, Name: form.KeyName, Content: form.KeyContent, } if err := models.AddPublicKey(k); err != nil { if err.Error() == models.ErrKeyAlreadyExist.Error() { ctx.RenderWithErr("Public key name has been used", "user/publickey", &form) return } ctx.Handle(200, "ssh.AddPublicKey", err) log.Trace("%s User SSH key added: %s", ctx.Req.RequestURI, ctx.User.LowerName) return } else { ctx.Data["AddSSHKeySuccess"] = true } } // List existed SSH keys. keys, err := models.ListPublicKey(ctx.User.Id) if err != nil { ctx.Handle(200, "ssh.ListPublicKey", err) return } ctx.Data["PageIsUserSetting"] = true ctx.Data["IsUserPageSettingSSH"] = true ctx.Data["Keys"] = keys ctx.HTML(200, "user/publickey") }
func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { ctx.Data["Title"] = ctx.Tr("settings") ctx.Data["PageIsUserSettings"] = true ctx.Data["PageIsSettingsSSHKeys"] = true var err error ctx.Data["Keys"], err = models.ListPublicKey(ctx.User.Id) if err != nil { ctx.Handle(500, "ssh.ListPublicKey", err) return } // Delete SSH key. if ctx.Query("_method") == "DELETE" { id := com.StrTo(ctx.Query("id")).MustInt64() if id <= 0 { return } 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) ctx.Redirect("/user/settings/ssh") } return } // Add new SSH key. if ctx.Req.Method == "POST" { if ctx.HasError() { ctx.HTML(200, SETTINGS_SSH_KEYS) return } // Remove newline characters from form.KeyContent cleanContent := strings.Replace(form.Content, "\n", "", -1) if ok, err := models.CheckPublicKeyString(cleanContent); !ok { ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) ctx.Redirect("/user/settings/ssh") return } k := &models.PublicKey{ OwnerId: ctx.User.Id, Name: form.SSHTitle, Content: cleanContent, } 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 } 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.Redirect("/user/settings/ssh") return } } ctx.HTML(200, SETTINGS_SSH_KEYS) }