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, username) ⇒ Boolean
- #add_single_member(create_service_params) ⇒ Object
- #authorize_admin_source!(source_type, source) ⇒ Object
- #authorize_admin_source_member!(source_type, source) ⇒ Object
- #authorize_invite_source_member!(source_type, source) ⇒ Object
- #authorize_read_source_member!(source_type, source) ⇒ Object
- #authorize_update_source_member!(source_type, member) ⇒ Object
- #check_existing_membership(create_service_params) ⇒ 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
- #present_members_with_invited_private_group_accessibility(members, source) ⇒ Object
- #present_put_membership_response(result) ⇒ 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
136 137 138 |
# File 'lib/api/helpers/members_helpers.rb', line 136 def self.member_access_levels Gitlab::Access.all_values end |
Instance Method Details
#add_multiple_members?(user_id, username) ⇒ Boolean
132 133 134 |
# File 'lib/api/helpers/members_helpers.rb', line 132 def add_multiple_members?(user_id, username) user_id&.include?(',') || username&.include?(',') end |
#add_single_member(create_service_params) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/api/helpers/members_helpers.rb', line 95 def add_single_member(create_service_params) check_existing_membership(create_service_params) instance = ::Members::CreateService.new(current_user, create_service_params) result = instance.execute # This currently can only be reached in EE if group membership is locked not_allowed! if instance.membership_locked if result[:status] == :error && result[:http_status] == :unauthorized raise Gitlab::Access::AccessDeniedError end # prefer responding with model validations, if present member = instance.single_member render_validation_error!(member) if member&.invalid? present_add_single_member_response(result, member) end |
#authorize_admin_source!(source_type, source) ⇒ Object
37 38 39 |
# File 'lib/api/helpers/members_helpers.rb', line 37 def (source_type, source) :"admin_#{source_type}", source end |
#authorize_admin_source_member!(source_type, source) ⇒ Object
25 26 27 |
# File 'lib/api/helpers/members_helpers.rb', line 25 def (source_type, source) :"admin_#{source_type}_member", source end |
#authorize_invite_source_member!(source_type, source) ⇒ Object
29 30 31 |
# File 'lib/api/helpers/members_helpers.rb', line 29 def (source_type, source) :"invite_#{source_type}_members", 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 |
#authorize_update_source_member!(source_type, member) ⇒ Object
33 34 35 |
# File 'lib/api/helpers/members_helpers.rb', line 33 def (source_type, member) :"update_#{source_type}_member", member end |
#check_existing_membership(create_service_params) ⇒ Object
125 126 127 128 129 130 |
# File 'lib/api/helpers/members_helpers.rb', line 125 def check_existing_membership(create_service_params) user_id = User.get_ids_by_ids_or_usernames(create_service_params[:user_id], create_service_params[:username]).first not_found!('User') unless user_id conflict!('Member already exists') if member_already_exists?(create_service_params[:source], user_id) end |
#find_all_members(source) ⇒ Object
rubocop: enable CodeReuse/ActiveRecord
65 66 67 68 |
# File 'lib/api/helpers/members_helpers.rb', line 65 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
75 76 77 |
# File 'lib/api/helpers/members_helpers.rb', line 75 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
70 71 72 73 |
# File 'lib/api/helpers/members_helpers.rb', line 70 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
83 84 85 |
# File 'lib/api/helpers/members_helpers.rb', line 83 def present_member_invitations(invitations) present invitations, with: Entities::Invitation, current_user: current_user end |
#present_members(members) ⇒ Object
79 80 81 |
# File 'lib/api/helpers/members_helpers.rb', line 79 def present_members(members) present members, with: Entities::Member, current_user: current_user, show_seat_info: params[:show_seat_info] end |
#present_members_with_invited_private_group_accessibility(members, source) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/api/helpers/members_helpers.rb', line 87 def present_members_with_invited_private_group_accessibility(members, source) ::Members::InvitedPrivateGroupAccessibilityAssigner .new(members, source: source, current_user: current_user) .execute present_members members end |
#present_put_membership_response(result) ⇒ Object
115 116 117 118 119 120 121 122 123 |
# File 'lib/api/helpers/members_helpers.rb', line 115 def present_put_membership_response(result) updated_member = result[:members].first if result[:status] == :success present_members updated_member else render_validation_error!(updated_member) end end |
#retrieve_member_invitations(source, query = nil) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/api/helpers/members_helpers.rb', line 51 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
42 43 44 45 46 47 48 49 |
# File 'lib/api/helpers/members_helpers.rb', line 42 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
58 59 60 61 62 |
# File 'lib/api/helpers/members_helpers.rb', line 58 def source_members(source) return source.namespace_members if source.is_a?(Project) source.members end |