forked from gitea/gitea
		
	Users with read permission of pull requests can be assigned too (#27263)
				
					
				
			This PR will also keep the consistent between list assigned users and check assigned users.
This commit is contained in:
		
							parent
							
								
									29a26d9d8c
								
							
						
					
					
						commit
						98ab9445d1
					
				| @ -332,7 +332,6 @@ func HasAccessUnit(ctx context.Context, user *user_model.User, repo *repo_model. | ||||
| 
 | ||||
| // CanBeAssigned return true if user can be assigned to issue or pull requests in repo | ||||
| // Currently any write access (code, issues or pr's) is assignable, to match assignee list in user interface. | ||||
| // FIXME: user could send PullRequest also could be assigned??? | ||||
| func CanBeAssigned(ctx context.Context, user *user_model.User, repo *repo_model.Repository, _ bool) (bool, error) { | ||||
| 	if user.IsOrganization() { | ||||
| 		return false, fmt.Errorf("Organization can't be added as assignee [user_id: %d, repo_id: %d]", user.ID, repo.ID) | ||||
| @ -341,7 +340,8 @@ func CanBeAssigned(ctx context.Context, user *user_model.User, repo *repo_model. | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
| 	return perm.CanAccessAny(perm_model.AccessModeWrite, unit.TypeCode, unit.TypeIssues, unit.TypePullRequests), nil | ||||
| 	return perm.CanAccessAny(perm_model.AccessModeWrite, unit.AllRepoUnitTypes...) || | ||||
| 		perm.CanAccessAny(perm_model.AccessModeRead, unit.TypePullRequests), nil | ||||
| } | ||||
| 
 | ||||
| // HasAccess returns true if user has access to repo | ||||
|  | ||||
| @ -8,6 +8,7 @@ import ( | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models/db" | ||||
| 	"code.gitea.io/gitea/models/perm" | ||||
| 	"code.gitea.io/gitea/models/unit" | ||||
| 	user_model "code.gitea.io/gitea/models/user" | ||||
| 	"code.gitea.io/gitea/modules/container" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| @ -78,7 +79,8 @@ func GetRepoAssignees(ctx context.Context, repo *Repository) (_ []*user_model.Us | ||||
| 	if err = e.Table("team_user"). | ||||
| 		Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id"). | ||||
| 		Join("INNER", "team_unit", "`team_unit`.team_id = `team_user`.team_id"). | ||||
| 		Where("`team_repo`.repo_id = ? AND `team_unit`.access_mode >= ?", repo.ID, perm.AccessModeWrite). | ||||
| 		Where("`team_repo`.repo_id = ? AND (`team_unit`.access_mode >= ? OR (`team_unit`.access_mode = ? AND `team_unit`.`type` = ?))", | ||||
| 			repo.ID, perm.AccessModeWrite, perm.AccessModeRead, unit.TypePullRequests). | ||||
| 		Distinct("`team_user`.uid"). | ||||
| 		Select("`team_user`.uid"). | ||||
| 		Find(&additionalUserIDs); err != nil { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 GitHub
							GitHub