mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08:00 
			
		
		
		
	Require approval to run actions for fork pull request (#22803)
Currently, Gitea will run actions automatically which are triggered by fork pull request. It's a security risk, people can create a PR and modify the workflow yamls to execute a malicious script. So we should require approval for first-time contributors, which is the default strategy of a public repo on GitHub, see [Approving workflow runs from public forks](https://docs.github.com/en/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks). Current strategy: - don't need approval if it's not a fork PR; - always need approval if the user is restricted; - don't need approval if the user can write; - don't need approval if the user has been approved before; - otherwise, need approval. https://user-images.githubusercontent.com/9418365/217207121-badf50a8-826c-4425-bef1-d82d1979bc81.mov GitHub has an option for that, you can see that at `/<owner>/<repo>/settings/actions`, and we can support that later. <img width="835" alt="image" src="https://user-images.githubusercontent.com/9418365/217199990-2967e68b-e693-4e59-8186-ab33a1314a16.png"> --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
							
								
								
									
										22
									
								
								models/migrations/v1_20/v244.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								models/migrations/v1_20/v244.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
package v1_20 //nolint
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"xorm.io/xorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func AddNeedApprovalToActionRun(x *xorm.Engine) error {
 | 
			
		||||
	/*
 | 
			
		||||
		New index: TriggerUserID
 | 
			
		||||
		New fields: NeedApproval, ApprovedBy
 | 
			
		||||
	*/
 | 
			
		||||
	type ActionRun struct {
 | 
			
		||||
		TriggerUserID int64 `xorm:"index"`
 | 
			
		||||
		NeedApproval  bool  // may need approval if it's a fork pull request
 | 
			
		||||
		ApprovedBy    int64 `xorm:"index"` // who approved
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return x.Sync(new(ActionRun))
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user