Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/groups/group_members_controller.rb')
-rw-r--r--app/controllers/groups/group_members_controller.rb24
1 files changed, 18 insertions, 6 deletions
diff --git a/app/controllers/groups/group_members_controller.rb b/app/controllers/groups/group_members_controller.rb
index 5df7ff0632a..c2ac56ccc63 100644
--- a/app/controllers/groups/group_members_controller.rb
+++ b/app/controllers/groups/group_members_controller.rb
@@ -4,6 +4,7 @@ class Groups::GroupMembersController < Groups::ApplicationController
include MembershipActions
include MembersPresentation
include SortingHelper
+ include Gitlab::Utils::StrongMemoize
MEMBER_PER_PAGE_LIMIT = 50
@@ -21,16 +22,17 @@ class Groups::GroupMembersController < Groups::ApplicationController
feature_category :authentication_and_authorization
+ helper_method :can_manage_members?
+
def index
+ preload_max_access
@sort = params[:sort].presence || sort_value_name
- @project = @group.projects.find(params[:project_id]) if params[:project_id]
-
@members = GroupMembersFinder
.new(@group, current_user, params: filter_params)
.execute(include_relations: requested_relations)
- if can_manage_members
+ if can_manage_members?
@skip_groups = @group.related_group_ids
@invited_members = @members.invite
@@ -52,8 +54,18 @@ class Groups::GroupMembersController < Groups::ApplicationController
private
- def can_manage_members
- can?(current_user, :admin_group_member, @group)
+ def preload_max_access
+ return unless current_user
+
+ # this allows the can? against admin type queries in this action to
+ # only perform the query once, even if it is cached
+ current_user.max_access_for_group[@group.id] = @group.max_member_access(current_user)
+ end
+
+ def can_manage_members?
+ strong_memoize(:can_manage_members) do
+ can?(current_user, :admin_group_member, @group)
+ end
end
def present_invited_members(invited_members)
@@ -77,4 +89,4 @@ class Groups::GroupMembersController < Groups::ApplicationController
end
end
-Groups::GroupMembersController.prepend_if_ee('EE::Groups::GroupMembersController')
+Groups::GroupMembersController.prepend_mod_with('Groups::GroupMembersController')