(c *context.Context, f form.AddSSHKey)
| 670 | } |
| 671 | |
| 672 | func SettingsDeployKeysPost(c *context.Context, f form.AddSSHKey) { |
| 673 | c.Data["Title"] = c.Tr("repo.settings.deploy_keys") |
| 674 | c.Data["PageIsSettingsKeys"] = true |
| 675 | |
| 676 | keys, err := database.ListDeployKeys(c.Repo.Repository.ID) |
| 677 | if err != nil { |
| 678 | c.Error(err, "list deploy keys") |
| 679 | return |
| 680 | } |
| 681 | c.Data["Deploykeys"] = keys |
| 682 | |
| 683 | if c.HasError() { |
| 684 | c.HTML(http.StatusBadRequest, tmplRepoSettingsDeployKeys) |
| 685 | return |
| 686 | } |
| 687 | |
| 688 | content, err := database.CheckPublicKeyString(f.Content) |
| 689 | if err != nil { |
| 690 | if database.IsErrKeyUnableVerify(err) { |
| 691 | c.Flash.Info(c.Tr("form.unable_verify_ssh_key")) |
| 692 | } else { |
| 693 | c.Data["HasError"] = true |
| 694 | c.Data["Err_Content"] = true |
| 695 | c.Flash.Error(c.Tr("form.invalid_ssh_key", err.Error())) |
| 696 | c.Redirect(c.Repo.RepoLink + "/settings/keys") |
| 697 | return |
| 698 | } |
| 699 | } |
| 700 | |
| 701 | key, err := database.AddDeployKey(c.Repo.Repository.ID, f.Title, content) |
| 702 | if err != nil { |
| 703 | c.Data["HasError"] = true |
| 704 | switch { |
| 705 | case database.IsErrKeyAlreadyExist(err): |
| 706 | c.Data["Err_Content"] = true |
| 707 | c.RenderWithErr(c.Tr("repo.settings.key_been_used"), http.StatusUnprocessableEntity, tmplRepoSettingsDeployKeys, &f) |
| 708 | case database.IsErrKeyNameAlreadyUsed(err): |
| 709 | c.Data["Err_Title"] = true |
| 710 | c.RenderWithErr(c.Tr("repo.settings.key_name_used"), http.StatusUnprocessableEntity, tmplRepoSettingsDeployKeys, &f) |
| 711 | default: |
| 712 | c.Error(err, "add deploy key") |
| 713 | } |
| 714 | return |
| 715 | } |
| 716 | |
| 717 | log.Trace("Deploy key added: %d", c.Repo.Repository.ID) |
| 718 | c.Flash.Success(c.Tr("repo.settings.add_key_success", key.Name)) |
| 719 | c.Redirect(c.Repo.RepoLink + "/settings/keys") |
| 720 | } |
| 721 | |
| 722 | func DeleteDeployKey(c *context.Context) { |
| 723 | if err := database.DeleteDeployKey(c.User, c.QueryInt64("id")); err != nil { |
nothing calls this directly
no test coverage detected