mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Restrict permission check on repositories and fix some problems (#5314)
* fix units permission problems * fix some bugs and merge LoadUnits to repoAssignment * refactor permission struct and add some copyright heads * remove unused codes * fix routes units check * improve permission check * add unit tests for permission * fix typo * fix tests * fix some routes * fix api permission check * improve permission check * fix some permission check * fix tests * fix tests * improve some permission check * fix some permission check * refactor AccessLevel * fix bug * fix tests * fix tests * fix tests * fix AccessLevel * rename CanAccess * fix tests * fix comment * fix bug * add missing unit for test repos * fix bug * rename some functions * fix routes check
This commit is contained in:
		@@ -200,7 +200,7 @@ func CreateRelease(gitRepo *git.Repository, rel *Release, attachmentUUIDs []stri
 | 
			
		||||
		if err := rel.LoadAttributes(); err != nil {
 | 
			
		||||
			log.Error(2, "LoadAttributes: %v", err)
 | 
			
		||||
		} else {
 | 
			
		||||
			mode, _ := AccessLevel(rel.PublisherID, rel.Repo)
 | 
			
		||||
			mode, _ := AccessLevel(rel.Publisher, rel.Repo)
 | 
			
		||||
			if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
 | 
			
		||||
				Action:     api.HookReleasePublished,
 | 
			
		||||
				Release:    rel.APIFormat(),
 | 
			
		||||
@@ -392,7 +392,7 @@ func UpdateRelease(doer *User, gitRepo *git.Repository, rel *Release, attachment
 | 
			
		||||
 | 
			
		||||
	err = addReleaseAttachments(rel.ID, attachmentUUIDs)
 | 
			
		||||
 | 
			
		||||
	mode, _ := accessLevel(x, doer.ID, rel.Repo)
 | 
			
		||||
	mode, _ := AccessLevel(doer, rel.Repo)
 | 
			
		||||
	if err1 := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
 | 
			
		||||
		Action:     api.HookReleaseUpdated,
 | 
			
		||||
		Release:    rel.APIFormat(),
 | 
			
		||||
@@ -419,13 +419,6 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
 | 
			
		||||
		return fmt.Errorf("GetRepositoryByID: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	has, err := HasAccess(u.ID, repo, AccessModeWrite)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("HasAccess: %v", err)
 | 
			
		||||
	} else if !has {
 | 
			
		||||
		return fmt.Errorf("DeleteReleaseByID: permission denied")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if delTag {
 | 
			
		||||
		_, stderr, err := process.GetManager().ExecDir(-1, repo.RepoPath(),
 | 
			
		||||
			fmt.Sprintf("DeleteReleaseByID (git tag -d): %d", rel.ID),
 | 
			
		||||
@@ -454,7 +447,7 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
 | 
			
		||||
		return fmt.Errorf("LoadAttributes: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mode, _ := accessLevel(x, u.ID, rel.Repo)
 | 
			
		||||
	mode, _ := AccessLevel(u, rel.Repo)
 | 
			
		||||
	if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
 | 
			
		||||
		Action:     api.HookReleaseDeleted,
 | 
			
		||||
		Release:    rel.APIFormat(),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user