Module: API::Helpers::MembersHelpers
- Extended by:
- Grape::API::Helpers
- Included in:
- BadgesHelpers, Mutations::Members::BulkUpdateBase
- Defined in:
- lib/api/helpers/members_helpers.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_multiple_members?(user_id) ⇒ Boolean
- #add_single_member?(user_id) ⇒ Boolean
- #add_single_member_by_user_id(create_service_params) ⇒ Object
- #authorize_admin_source!(source_type, source) ⇒ Object
- #authorize_read_source_member!(source_type, source) ⇒ Object
-
#find_all_members(source) ⇒ Object
rubocop: enable CodeReuse/ActiveRecord.
- #find_all_members_for_group(group) ⇒ Object
- #find_all_members_for_project(project) ⇒ Object
- #find_source(source_type, id) ⇒ Object
- #present_member_invitations(invitations) ⇒ Object
- #present_members(members) ⇒ Object
- #retrieve_member_invitations(source, query = nil) ⇒ Object
-
#retrieve_members(source, params:, deep: false) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord.
- #source_members(source) ⇒ Object
Class Method Details
.member_access_levels ⇒ Object
105 106 107 |
# File 'lib/api/helpers/members_helpers.rb', line 105 def self.member_access_levels Gitlab::Access.all_values end |
Instance Method Details
#add_multiple_members?(user_id) ⇒ Boolean
97 98 99 |
# File 'lib/api/helpers/members_helpers.rb', line 97 def add_multiple_members?(user_id) user_id.include?(',') end |
#add_single_member?(user_id) ⇒ Boolean
101 102 103 |
# File 'lib/api/helpers/members_helpers.rb', line 101 def add_single_member?(user_id) user_id.present? end |
#add_single_member_by_user_id(create_service_params) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/api/helpers/members_helpers.rb', line 75 def add_single_member_by_user_id(create_service_params) source = create_service_params[:source] user_id = create_service_params[:user_id] user = User.find_by(id: user_id) # rubocop: disable CodeReuse/ActiveRecord if user conflict!('Member already exists') if member_already_exists?(source, user_id) instance = ::Members::CreateService.new(current_user, create_service_params) instance.execute not_allowed! if instance.membership_locked # This currently can only be reached in EE if group membership is locked member = instance.single_member render_validation_error!(member) if member.invalid? present_members(member) else not_found!('User') end end |
#authorize_admin_source!(source_type, source) ⇒ Object
25 26 27 |
# File 'lib/api/helpers/members_helpers.rb', line 25 def (source_type, source) :"admin_#{source_type}", source end |
#authorize_read_source_member!(source_type, source) ⇒ Object
21 22 23 |
# File 'lib/api/helpers/members_helpers.rb', line 21 def (source_type, source) :"read_#{source_type}_member", source end |
#find_all_members(source) ⇒ Object
rubocop: enable CodeReuse/ActiveRecord
53 54 55 56 |
# File 'lib/api/helpers/members_helpers.rb', line 53 def find_all_members(source) members = source.is_a?(Project) ? find_all_members_for_project(source) : find_all_members_for_group(source) members.non_invite.non_request end |
#find_all_members_for_group(group) ⇒ Object
63 64 65 |
# File 'lib/api/helpers/members_helpers.rb', line 63 def find_all_members_for_group(group) GroupMembersFinder.new(group, current_user).execute(include_relations: [:inherited, :direct, :shared_from_groups]) end |
#find_all_members_for_project(project) ⇒ Object
58 59 60 61 |
# File 'lib/api/helpers/members_helpers.rb', line 58 def find_all_members_for_project(project) include_relations = [:inherited, :direct, :invited_groups, :shared_into_ancestors] MembersFinder.new(project, current_user).execute(include_relations: include_relations) end |
#find_source(source_type, id) ⇒ Object
17 18 19 |
# File 'lib/api/helpers/members_helpers.rb', line 17 def find_source(source_type, id) public_send("find_#{source_type}!", id) # rubocop:disable GitlabSecurity/PublicSend end |
#present_member_invitations(invitations) ⇒ Object
71 72 73 |
# File 'lib/api/helpers/members_helpers.rb', line 71 def present_member_invitations(invitations) present invitations, with: Entities::Invitation, current_user: current_user end |
#present_members(members) ⇒ Object
67 68 69 |
# File 'lib/api/helpers/members_helpers.rb', line 67 def present_members(members) present members, with: Entities::Member, current_user: current_user, show_seat_info: params[:show_seat_info] end |
#retrieve_member_invitations(source, query = nil) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/api/helpers/members_helpers.rb', line 39 def retrieve_member_invitations(source, query = nil) members = source_members(source).where.not(invite_token: nil) members = members.includes(:user) members = members.where(invite_email: query) if query.present? members end |
#retrieve_members(source, params:, deep: false) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord
30 31 32 33 34 35 36 37 |
# File 'lib/api/helpers/members_helpers.rb', line 30 def retrieve_members(source, params:, deep: false) members = deep ? find_all_members(source) : source_members(source).connected_to_user members = members.allow_cross_joins_across_databases(url: "https://gitlab.com/gitlab-org/gitlab/-/issues/417456") members = members.includes(:user) members = members.references(:user).merge(User.search(params[:query], use_minimum_char_limit: false)) if params[:query].present? members = members.where(user_id: params[:user_ids]) if params[:user_ids].present? members end |
#source_members(source) ⇒ Object
46 47 48 49 50 |
# File 'lib/api/helpers/members_helpers.rb', line 46 def source_members(source) return source.namespace_members if source.is_a?(Project) source.members end |