member_presenter.rb 928 Bytes
Newer Older
1 2
# frozen_string_literal: true

3 4 5
class MemberPresenter < Gitlab::View::Presenter::Delegated
  presents :member

6 7 8 9
  def access_level_roles
    member.class.access_level_roles
  end

10 11 12 13 14 15 16 17
  def valid_level_roles
    return access_level_roles unless member.highest_group_member

    access_level_roles.reject do |_name, level|
      member.highest_group_member.access_level > level
    end
  end

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
  def can_resend_invite?
    invite? &&
      can?(current_user, admin_member_permission, source)
  end

  def can_update?
    can?(current_user, update_member_permission, member)
  end

  def can_remove?
    can?(current_user, destroy_member_permission, member)
  end

  def can_approve?
    request? && can_update?
  end

  private

  def admin_member_permission
    raise NotImplementedError
  end

  def update_member_permission
    raise NotImplementedError
  end

  def destroy_member_permission
    raise NotImplementedError
  end
end