discourse-assign/lib/discourse_assign/group_extension.rb

28 lines
868 B
Ruby

# frozen_string_literal: true
module DiscourseAssign
module GroupExtension
extend ActiveSupport::Concern
prepended do
has_many :assignments, as: :assigned_to
scope :assignable,
->(user) do
where(
"assignable_level in (:levels) OR
(
assignable_level = #{Group::ALIAS_LEVELS[:members_mods_and_admins]} AND id in (
SELECT group_id FROM group_users WHERE user_id = :user_id)
) OR (
assignable_level = #{Group::ALIAS_LEVELS[:owners_mods_and_admins]} AND id in (
SELECT group_id FROM group_users WHERE user_id = :user_id AND owner IS TRUE)
)",
levels: alias_levels(user),
user_id: user&.id,
)
end
end
end
end