1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# frozen_string_literal: true
class Projects::ProjectMembersController < Projects::ApplicationController
include MembershipActions
include MembersPresentation
include SortingHelper
# Authorize
before_action :authorize_admin_project_member!, except: [:index, :leave, :request_access]
feature_category :groups_and_projects
urgency :low
def index
@sort = pagination_params[:sort].presence || sort_value_name
@include_relations ||= requested_relations(:groups_with_inherited_permissions)
if can?(current_user, :admin_project_member, @project)
@invited_members = present_members(invited_members)
@requesters = present_members(AccessRequestsFinder.new(@project).execute(current_user))
end
@project_members = present_members(non_invited_members.page(pagination_params[:page]))
end
# MembershipActions concern
alias_method :membershipable, :project
private
def members
@members ||= MembersFinder
.new(@project, current_user, params: filter_params)
.execute(include_relations: requested_relations)
end
def invited_members
members.invite.with_invited_user_state
end
def non_invited_members
members.non_invite
end
def filter_params
params.permit(:search, :max_role).merge(sort: @sort)
end
def membershipable_members
project.namespace_members
end
def plain_source_type
'project'
end
def source_type
_("project")
end
def source
project
end
def members_page_url
project_project_members_path(project)
end
def root_params_key
:project_member
end
def members_and_requesters
project.namespace_members_and_requesters
end
def requesters
project.namespace_requesters
end
end
Projects::ProjectMembersController.prepend_mod_with('Projects::ProjectMembersController')
|