members_helper.rb 2.01 KB
Newer Older
1
module MembersHelper
2 3 4
  # Returns a `<action>_<source>_member` association, e.g.:
  # - admin_project_member, update_project_member, destroy_project_member
  # - admin_group_member, update_group_member, destroy_group_member
5
  def action_member_permission(action, member)
6
    "#{action}_#{member.type.underscore}".to_sym
7 8
  end

9 10
  def default_show_roles(member)
    can?(current_user, action_member_permission(:update, member), member) ||
Rémy Coutable's avatar
Rémy Coutable committed
11 12
      can?(current_user, action_member_permission(:destroy, member), member) ||
      can?(current_user, action_member_permission(:admin, member), member.source)
13 14
  end

15 16 17 18 19 20 21 22 23 24 25
  def can_see_request_access_button?(source)
    source_parent = source.respond_to?(:group) && source.group

    return false if source_parent && source.group.members.exists?(user_id: current_user.id)
    return false if source_parent && source.group.requesters.exists?(user_id: current_user.id)
    return false if source.members.exists?(user_id: current_user.id)
    return true if source.requesters.exists?(user_id: current_user.id)

    true
  end

26 27
  def remove_member_message(member, user: nil)
    user = current_user if defined?(current_user)
28

29 30 31 32 33 34 35 36 37 38 39 40 41
    text = 'Are you sure you want to '
    action =
      if member.request?
        if member.user == user
          'withdraw your access request for'
        else
          "deny #{member.user.name}'s request to join"
        end
      elsif member.invite?
        "revoke the invitation for #{member.invite_email} to join"
      else
        "remove #{member.user.name} from"
      end
42

43
    text << action << " the #{member.source.human_name} #{member.real_source_type.humanize(capitalize: false)}?"
44 45 46
  end

  def remove_member_title(member)
47
    text = " from #{member.real_source_type.humanize(capitalize: false)}"
48

49
    text.prepend(member.request? ? 'Deny access request' : 'Remove user')
50 51
  end

52 53 54
  def leave_confirmation_message(member_source)
    "Are you sure you want to leave the " \
    "\"#{member_source.human_name}\" #{member_source.class.to_s.humanize(capitalize: false)}?"
55 56
  end
end