diff options
Diffstat (limited to 'models/repo_permission.go')
-rw-r--r-- | models/repo_permission.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/models/repo_permission.go b/models/repo_permission.go index 916678d168..fad29bd169 100644 --- a/models/repo_permission.go +++ b/models/repo_permission.go @@ -329,10 +329,18 @@ func HasAccessUnit(user *User, repo *Repository, unitType UnitType, testMode Acc return hasAccessUnit(x, user, repo, unitType, testMode) } -// canBeAssigned return true if user could be assigned to a repo +// 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(e Engine, user *User, repo *Repository) (bool, error) { - return hasAccessUnit(e, user, repo, UnitTypeCode, AccessModeWrite) +func CanBeAssigned(user *User, repo *Repository, isPull 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) + } + perm, err := GetUserRepoPermission(repo, user) + if err != nil { + return false, err + } + return perm.CanAccessAny(AccessModeWrite, UnitTypeCode, UnitTypeIssues, UnitTypePullRequests), nil } func hasAccess(e Engine, userID int64, repo *Repository) (bool, error) { |