debian-mirror-gitlab/lib/gitlab/project_authorizations/without_nested_groups.rb

36 lines
1,017 B
Ruby
Raw Normal View History

2017-09-10 17:25:29 +05:30
module Gitlab
module ProjectAuthorizations
# Calculating new project authorizations when not supporting nested groups.
class WithoutNestedGroups
attr_reader :user
# user - The User object for which to calculate the authorizations.
def initialize(user)
@user = user
end
def calculate
relations = [
# Projects the user is a direct member of
user.projects.select_for_project_authorization,
# Personal projects
2018-11-18 11:00:15 +05:30
user.personal_projects.select_as_maintainer_for_project_authorization,
2017-09-10 17:25:29 +05:30
# Projects of groups the user is a member of
user.groups_projects.select_for_project_authorization,
# Projects shared with groups the user is a member of
user.groups.joins(:shared_projects).select_for_project_authorization
]
union = Gitlab::SQL::Union.new(relations)
ProjectAuthorization
.unscoped
.select_from_union(union)
end
end
end
end