MCPcopy Create free account
hub / github.com/gogs/gogs / DeleteDeployKey

Function DeleteDeployKey

internal/database/ssh_key.go:739–785  ·  view source on GitHub ↗

DeleteDeployKey deletes deploy key from its repository authorized_keys file if needed.

(doer *User, id int64)

Source from the content-addressed store, hash-verified

737
738// DeleteDeployKey deletes deploy key from its repository authorized_keys file if needed.
739func DeleteDeployKey(doer *User, id int64) error {
740 key, err := GetDeployKeyByID(id)
741 if err != nil {
742 if IsErrDeployKeyNotExist(err) {
743 return nil
744 }
745 return errors.Newf("GetDeployKeyByID: %v", err)
746 }
747
748 // Check if user has access to delete this key.
749 if !doer.IsAdmin {
750 repo, err := GetRepositoryByID(key.RepoID)
751 if err != nil {
752 return errors.Newf("GetRepositoryByID: %v", err)
753 }
754 if !Handle.Permissions().Authorize(context.TODO(), doer.ID, repo.ID, AccessModeAdmin,
755 AccessModeOptions{
756 OwnerID: repo.OwnerID,
757 Private: repo.IsPrivate,
758 },
759 ) {
760 return ErrKeyAccessDenied{doer.ID, key.ID, "deploy"}
761 }
762 }
763
764 sess := x.NewSession()
765 defer sess.Close()
766 if err = sess.Begin(); err != nil {
767 return err
768 }
769
770 if _, err = sess.ID(key.ID).Delete(new(DeployKey)); err != nil {
771 return errors.Newf("delete deploy key [%d]: %v", key.ID, err)
772 }
773
774 // Check if this is the last reference to same key content.
775 has, err := sess.Where("key_id = ?", key.KeyID).Get(new(DeployKey))
776 if err != nil {
777 return err
778 } else if !has {
779 if err = deletePublicKeys(sess, key.KeyID); err != nil {
780 return err
781 }
782 }
783
784 return sess.Commit()
785}
786
787// ListDeployKeys returns all deploy keys by given repository ID.
788func ListDeployKeys(repoID int64) ([]*DeployKey, error) {

Callers 2

DeleteDeployKeyFunction · 0.92
DeleteDeploykeyFunction · 0.92

Calls 10

GetDeployKeyByIDFunction · 0.85
IsErrDeployKeyNotExistFunction · 0.85
GetRepositoryByIDFunction · 0.85
deletePublicKeysFunction · 0.85
AuthorizeMethod · 0.80
PermissionsMethod · 0.80
DeleteMethod · 0.80
WhereMethod · 0.80
IDMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected