_member.html.haml 7.1 KB
Newer Older
1
- show_roles = local_assigns.fetch(:show_roles, true)
R
Rémy Coutable 已提交
2
- show_controls = local_assigns.fetch(:show_controls, true)
C
Clement Ho 已提交
3
- force_mobile_view = local_assigns.fetch(:force_mobile_view, false)
4
- member = local_assigns.fetch(:member)
P
Phil Hughes 已提交
5
- user = local_assigns.fetch(:user, member.user)
P
Phil Hughes 已提交
6
- source = member.source
7
- override = member.try(:override)
R
Rémy Coutable 已提交
8

9 10
-# Note this is just for individual members. For groups please see shared/members/_group

11
%li.member.py-2.px-3.d-flex.flex-column{ class: [dom_class(member), ("is-overridden" if override), ("flex-md-row" unless force_mobile_view)], id: dom_id(member), data: { qa_selector: 'member_row' } }
12
  %span.list-item-name.mb-2.m-md-0
13
    - if user
14
      = image_tag avatar_icon_for_user(user, 40), class: "avatar s40 flex-shrink-0 flex-grow-0", alt: ''
C
Clement Ho 已提交
15
      .user-info
16 17 18 19
        %span.mr-1
          = link_to user.name, user_path(user), class: 'member js-user-link', data: { user_id: user.id }
          = user_status(user)
          %span.cgray= user.to_reference
20

21 22
        .mx-n1.d-inline-flex.flex-wrap
          = render_if_exists 'shared/members/ee/sso_badge', member: member
23

24
          = render_if_exists 'shared/members/ee/gma_badge', member: member
25

26
          = render 'shared/members/its_you_badge', user: user, current_user: current_user
27

28
          = render_if_exists 'shared/members/ee/license_badge', user: user, group: @group
29

30 31 32
          = render 'shared/members/blocked_badge', user: user

          = render 'shared/members/two_factor_auth_badge', user: user
33

C
Clement Ho 已提交
34 35
        - if source.instance_of?(Group) && source != @group
          ·
36
          = link_to source.full_name, source, class: "member-group-link"
P
Phil Hughes 已提交
37

C
Clement Ho 已提交
38 39
        .cgray
          - if member.request?
40
            = _("Requested %{time_ago}").html_safe % { time_ago: time_ago_with_tooltip(member.requested_at) }
C
Clement Ho 已提交
41
          - else
42
            = _("Given access %{time_ago}").html_safe % { time_ago: time_ago_with_tooltip(member.created_at) }
C
Clement Ho 已提交
43 44 45
          - if member.expires?
            ·
            %span{ class: "#{"text-warning" if member.expires_soon?} has-tooltip", title: member.expires_at.to_time.in_time_zone.to_s(:medium) }
46
              = _("Expires in %{expires_at}").html_safe % { expires_at: distance_of_time_in_words_to_now(member.expires_at) }
47 48

    - else
49
      = image_tag avatar_icon_for_email(member.invite_email, 40), class: "avatar s40 flex-shrink-0 flex-grow-0", alt: ''
C
Clement Ho 已提交
50 51 52 53 54 55 56 57
      .user-info
        .member= member.invite_email
        .cgray
          Invited
          - if member.created_by
            by
            = link_to member.created_by.name, user_path(member.created_by)
          = time_ago_with_tooltip(member.created_at)
58
  - if show_roles
59
    - current_resource = @project || @group
60
    .controls.member-controls.align-items-center
61
      = render_if_exists 'shared/members/ee/ldap_tag', can_override: member.can_override?
62
      - if show_controls && member.source == current_resource
C
Clement Ho 已提交
63

64
        - if member.can_resend_invite?
65
          = link_to sprite_icon('paper-airplane'), polymorphic_path([:resend_invite, member]),
C
Clement Ho 已提交
66
                    method: :post,
67
                    class: 'btn btn-default align-self-center mr-sm-2',
68
                    title: _('Resend invite')
C
Clement Ho 已提交
69

70
        - if user != current_user && member.can_update?
71
          = form_for member, remote: true, html: { class: "js-edit-member-form form-group #{'d-sm-flex' unless force_mobile_view}" } do |f|
P
Phil Hughes 已提交
72
            = f.hidden_field :access_level
73
            .member-form-control.dropdown{ class: [("mr-sm-2 d-sm-inline-block" unless force_mobile_view)] }
P
Phil Hughes 已提交
74
              %button.dropdown-menu-toggle.js-member-permissions-dropdown{ type: "button",
75
                disabled: member.can_override? && !override,
76
                data: { toggle: "dropdown", field_name: "#{f.object_name}[access_level]", qa_selector: "access_level_dropdown" } }
P
Phil Hughes 已提交
77 78 79
                %span.dropdown-toggle-text
                  = member.human_access
                = icon("chevron-down")
C
Clement Ho 已提交
80
              .dropdown-menu.dropdown-select.dropdown-menu-right.dropdown-menu-selectable
81
                = dropdown_title(_("Change permissions"))
P
Phil Hughes 已提交
82 83
                .dropdown-content
                  %ul
84
                    - member.valid_level_roles.each do |role, role_id|
P
Phil Hughes 已提交
85
                      %li
86
                        = link_to role, '#',
P
Phil Hughes 已提交
87
                          class: ("is-active" if member.access_level == role_id),
88
                          data: { id: role_id, el_id: dom_id(member), qa_selector: "#{role.downcase}_access_level_link" }
89 90 91 92
                    = render_if_exists 'shared/members/ee/revert_ldap_group_sync_option',
                      group: @group,
                      member: member,
                      can_override: member.can_override?
93
            .clearable-input.member-form-control{ class: [("d-sm-inline-block" unless force_mobile_view)] }
94
              = f.text_field :expires_at,
95
                disabled: member.can_override? && !override,
96
                class: 'form-control js-access-expiration-date js-member-update-control',
97
                placeholder: _('Expiration date'),
98 99
                id: "member_expires_at_#{member.id}",
                data: { el_id: dom_id(member) }
P
Phil Hughes 已提交
100 101
              %i.clear-icon.js-clear-input
        - else
102
          %span.member-access-text.user-access-role= member.human_access
P
Phil Hughes 已提交
103

104
        - if member.can_approve?
C
Clement Ho 已提交
105
          = link_to polymorphic_path([:approve_access_request, member]),
106
                    method: :post,
107
                    class: "btn btn-success align-self-center m-0 mb-2 #{'mb-sm-0 ml-sm-2' unless force_mobile_view}",
108
                    title: _('Grant access') do
A
Annabel Dunstone Gray 已提交
109
            %span{ class: ('d-block d-sm-none' unless force_mobile_view) }
110
              = _('Grant access')
C
Clement Ho 已提交
111
            - unless force_mobile_view
C
Clement Ho 已提交
112
              = icon('check inverse', class: 'd-none d-sm-block')
113

114
        - if member.can_remove?
115
          - if current_user == user
116 117 118
            = link_to polymorphic_path([:leave, member.source, :members]), method: :delete, data: { confirm: leave_confirmation_message(member.source) }, class: "btn gl-button btn-svg btn-danger align-self-center m-0 #{'ml-sm-2' unless force_mobile_view}" do
              = sprite_icon('leave', css_class: 'gl-icon')
              = _('Leave')
119
          - else
120
            %button{ data: { member_path: member_path(member.member), message: remove_member_message(member), is_access_request: member.request?.to_s, qa_selector: 'delete_member_button' },
121
              class: "js-remove-member-button btn gl-button btn-danger align-self-center m-0 #{'ml-sm-2 btn-icon' unless force_mobile_view}",
122
              title: remove_member_title(member) }
A
Annabel Dunstone Gray 已提交
123
              %span{ class: ('d-block d-sm-none' unless force_mobile_view) }
124
                = _("Delete")
C
Clement Ho 已提交
125
              - unless force_mobile_view
126
                = sprite_icon('remove', css_class: 'd-none d-sm-block gl-icon')
127
        = render_if_exists 'shared/members/ee/override_member_buttons', group: @group, member: member, user: user, action: :edit, can_override: member.can_override?
P
Phil Hughes 已提交
128
      - else
129
        %span.member-access-text.user-access-role= member.human_access
130 131

= render_if_exists 'shared/members/ee/override_member_buttons', group: @group, member: member, user: user, action: :confirm, can_override: member.can_override?