discourse/app/services/site_setting/policy/settings_are_configurable.rb
Ted Johansson b40cbfcb76
DEV: Move backfill into SiteSetting::Update service (#32037)
Some site settings support backfilling if the user specified it. This works fine for singular site settings sent to the SiteSettingsController#update endpoint, but with bulk save we need to support this for a list of settings as well.

This change alters the params format for SiteSetting::Update.

It also moves the backfill logic into the service.
2025-03-28 12:01:56 +08:00

24 lines
636 B
Ruby

# frozen_string_literal: true
class SiteSetting::Policy::SettingsAreConfigurable < Service::PolicyBase
delegate :options, :params, to: :context
def call
@unconfigurable_settings = params.settings.map(&:name).select(&method(:validate_setting))
@unconfigurable_settings.empty?
end
def reason
I18n.t(
"errors.site_settings.site_settings_are_unconfigurable",
setting_names: @unconfigurable_settings.join(", "),
)
end
private
def validate_setting(setting_name)
SiteSetting.plugins[setting_name] &&
!Discourse.plugins_by_name[SiteSetting.plugins[setting_name]].configurable?
end
end