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

36 lines
1,001 B
Ruby
Raw Normal View History

2018-12-23 12:14:25 +05:30
# frozen_string_literal: true
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
]
ProjectAuthorization
.unscoped
2018-12-05 23:21:45 +05:30
.select_from_union(relations)
2017-09-10 17:25:29 +05:30
end
end
end
end