DEV: Log site setting changes from the rails console

When using the rails console to change site settings log them to the
staff actions logs so that there is a record.
This commit is contained in:
Blake Erickson
2025-02-14 15:39:54 -07:00
parent f76d88063d
commit f334238a98

View File

@@ -449,9 +449,13 @@ module SiteSettingExtension
clear_uploads_cache(name)
notify_clients!(name) if client_settings.include? name
clear_cache!
if old_val != current[name]
DiscourseEvent.trigger(:site_setting_changed, name, old_val, current[name])
if defined?(Rails::Console)
details = "Updated via Rails console"
log(name, val, old_val, Discourse.system_user, details)
end
DiscourseEvent.trigger(:site_setting_changed, name, old_val, current[name])
end
def notify_changed!
@@ -511,13 +515,8 @@ module SiteSettingExtension
if has_setting?(name)
prev_value = public_send(name)
set(name, value)
value = prev_value = "[FILTERED]" if secret_settings.include?(name.to_sym)
StaffActionLogger.new(user).log_site_setting_change(
name,
prev_value,
value,
{ details: detailed_message }.compact_blank,
)
# Logging via the rails console is already handled in add_override!
log(name, value, prev_value, user, detailed_message) unless defined?(Rails::Console)
else
raise Discourse::InvalidParameters.new(
I18n.t("errors.site_settings.invalid_site_setting", name: name),
@@ -769,6 +768,17 @@ module SiteSettingExtension
end
end
def log(name, value, prev_value, user = Discourse.system_user, detailed_message = nil)
value = prev_value = "[FILTERED]" if secret_settings.include?(name.to_sym)
return if hidden_settings.include?(name.to_sym)
StaffActionLogger.new(user).log_site_setting_change(
name,
prev_value,
value,
{ details: detailed_message }.compact_blank,
)
end
def default_uploads
@default_uploads ||= {}