Module: GroupGuardian

Included in:
Guardian
Defined in:
lib/guardian/group_guardian.rb

Overview

mixin for all guardian methods dealing with group permissions

Instance Method Summary collapse

Instance Method Details

#can_admin_group?(group) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
22
23
24
# File 'lib/guardian/group_guardian.rb', line 18

def can_admin_group?(group)
  is_admin? ||
    (
      SiteSetting.moderators_manage_categories_and_groups && is_moderator? && can_see?(group) &&
        group.id != Group::AUTO_GROUPS[:admins]
    )
end

#can_associate_groups?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/guardian/group_guardian.rb', line 35

def can_associate_groups?
  is_admin? && AssociatedGroup.has_provider?
end

#can_create_group?Boolean

Creating Method

Returns:

  • (Boolean)


6
7
8
# File 'lib/guardian/group_guardian.rb', line 6

def can_create_group?
  is_admin? || (SiteSetting.moderators_manage_categories_and_groups && is_moderator?)
end

#can_edit_group?(group) ⇒ Boolean

Edit authority for groups means membership changes only. Automatic groups are not represented in the GROUP_USERS table and thus do not allow membership changes.

Returns:

  • (Boolean)


13
14
15
16
# File 'lib/guardian/group_guardian.rb', line 13

def can_edit_group?(group)
  !group.automatic &&
    (can_admin_group?(group) || group.users.where("group_users.owner").include?(user))
end

#can_see_group_messages?(group) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
# File 'lib/guardian/group_guardian.rb', line 26

def can_see_group_messages?(group)
  return true if is_admin?
  return true if is_moderator? && group.id == Group::AUTO_GROUPS[:moderators]
  return false if user.blank?

  user.in_any_groups?(SiteSetting.personal_message_enabled_groups_map) &&
    group.users.include?(user)
end