summaryrefslogtreecommitdiff
path: root/app/helpers/groups/group_members_helper.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
commit85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch)
tree9160f299afd8c80c038f08e1545be119f5e3f1e1 /app/helpers/groups/group_members_helper.rb
parent15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff)
downloadgitlab-ce-85dc423f7090da0a52c73eb66faf22ddb20efff9.tar.gz
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'app/helpers/groups/group_members_helper.rb')
-rw-r--r--app/helpers/groups/group_members_helper.rb79
1 files changed, 79 insertions, 0 deletions
diff --git a/app/helpers/groups/group_members_helper.rb b/app/helpers/groups/group_members_helper.rb
index 1952325c504..dcff2be34da 100644
--- a/app/helpers/groups/group_members_helper.rb
+++ b/app/helpers/groups/group_members_helper.rb
@@ -1,6 +1,10 @@
# frozen_string_literal: true
module Groups::GroupMembersHelper
+ include AvatarsHelper
+
+ AVATAR_SIZE = 40
+
def group_member_select_options
{ multiple: true, class: 'input-clamp qa-member-select-field ', scope: :all, email_user: true }
end
@@ -8,6 +12,81 @@ module Groups::GroupMembersHelper
def render_invite_member_for_group(group, default_access_level)
render 'shared/members/invite_member', submit_url: group_group_members_path(group), access_levels: GroupMember.access_level_roles, default_access_level: default_access_level
end
+
+ def linked_groups_data_json(group_links)
+ GroupGroupLinkSerializer.new.represent(group_links).to_json
+ end
+
+ def members_data_json(group, members)
+ members_data(group, members).to_json
+ end
+
+ private
+
+ def members_data(group, members)
+ members.map do |member|
+ user = member.user
+ source = member.source
+
+ data = {
+ id: member.id,
+ created_at: member.created_at,
+ expires_at: member.expires_at&.to_time,
+ requested_at: member.requested_at,
+ can_update: member.can_update?,
+ can_remove: member.can_remove?,
+ can_override: member.can_override?,
+ access_level: {
+ string_value: member.human_access,
+ integer_value: member.access_level
+ },
+ source: {
+ id: source.id,
+ name: source.full_name,
+ web_url: Gitlab::UrlBuilder.build(source)
+ }
+ }.merge(member_created_by_data(member.created_by))
+
+ if user.present?
+ data[:user] = member_user_data(user)
+ else
+ data[:invite] = member_invite_data(member)
+ end
+
+ data
+ end
+ end
+
+ def member_created_by_data(created_by)
+ return {} unless created_by.present?
+
+ {
+ created_by: {
+ name: created_by.name,
+ web_url: Gitlab::UrlBuilder.build(created_by)
+ }
+ }
+ end
+
+ def member_user_data(user)
+ {
+ id: user.id,
+ name: user.name,
+ username: user.username,
+ web_url: Gitlab::UrlBuilder.build(user),
+ avatar_url: avatar_icon_for_user(user, AVATAR_SIZE),
+ blocked: user.blocked?,
+ two_factor_enabled: user.two_factor_enabled?
+ }
+ end
+
+ def member_invite_data(member)
+ {
+ email: member.invite_email,
+ avatar_url: avatar_icon_for_email(member.invite_email, AVATAR_SIZE),
+ can_resend: member.can_resend_invite?
+ }
+ end
end
Groups::GroupMembersHelper.prepend_if_ee('EE::Groups::GroupMembersHelper')