2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2015-01-09 07:35:52 +08:00
|
|
|
#mixin for all guardian methods dealing with group permissions
|
|
|
|
module GroupGuardian
|
|
|
|
|
2020-08-19 22:41:40 +08:00
|
|
|
# Creating Method
|
|
|
|
def can_create_group?
|
|
|
|
is_admin? ||
|
|
|
|
(
|
|
|
|
SiteSetting.moderators_manage_categories_and_groups &&
|
|
|
|
is_moderator?
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2015-01-09 07:35:52 +08:00
|
|
|
# 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.
|
|
|
|
def can_edit_group?(group)
|
2021-07-28 19:04:04 +08:00
|
|
|
!group.automatic &&
|
|
|
|
(can_admin_group?(group) || group.users.where('group_users.owner').include?(user))
|
2020-08-19 22:41:40 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def can_admin_group?(group)
|
|
|
|
is_admin? ||
|
|
|
|
(
|
|
|
|
SiteSetting.moderators_manage_categories_and_groups &&
|
|
|
|
is_moderator? &&
|
|
|
|
can_see?(group) &&
|
|
|
|
group.id != Group::AUTO_GROUPS[:admins]
|
|
|
|
)
|
2015-12-08 06:19:33 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def can_see_group_messages?(group)
|
2020-09-09 08:58:21 +08:00
|
|
|
return true if is_admin?
|
2020-10-06 00:38:08 +08:00
|
|
|
return true if is_moderator? && group.id == Group::AUTO_GROUPS[:moderators]
|
2022-09-26 11:58:40 +08:00
|
|
|
return false if user.blank?
|
2020-09-09 08:58:21 +08:00
|
|
|
|
2022-09-26 11:58:40 +08:00
|
|
|
# TODO (martin) Remove enable_personal_messages here once plugins have been changed.
|
|
|
|
(SiteSetting.enable_personal_messages ||
|
|
|
|
user.in_any_groups?(SiteSetting.personal_message_enabled_groups_map)) &&
|
|
|
|
group.users.include?(user)
|
2015-01-09 07:35:52 +08:00
|
|
|
end
|
2021-12-09 20:30:27 +08:00
|
|
|
|
|
|
|
def can_associate_groups?
|
|
|
|
is_admin? && AssociatedGroup.has_provider?
|
|
|
|
end
|
2015-01-09 07:35:52 +08:00
|
|
|
end
|