Backport #27263 by @lunny This PR will also keep the consistent between list assigned users and check assigned users. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
							parent
							
								
									e75594f7a6
								
							
						
					
					
						commit
						f98a1b851c
					
				|  | @ -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…
	
		Reference in New Issue