mirror of
https://github.com/discourse/discourse.git
synced 2025-06-25 19:15:05 +08:00
32 lines
736 B
Ruby
32 lines
736 B
Ruby
# frozen_string_literal: true
|
|
|
|
class ObjectsSettingValidator
|
|
def initialize(opts = {})
|
|
@opts = opts
|
|
end
|
|
|
|
def valid_value?(val)
|
|
parsed_value = val.is_a?(String) ? JSON.parse(val) : val
|
|
if parsed_value.nil? || !parsed_value.is_a?(Array)
|
|
@error = I18n.t("site_settings.errors.invalid_object")
|
|
return false
|
|
end
|
|
errors =
|
|
SchemaSettingsObjectValidator.validate_objects(schema: @opts[:schema], objects: parsed_value)
|
|
if errors.empty?
|
|
@error = nil
|
|
true
|
|
else
|
|
@error = errors.map(&:full_messages).flatten.join(", ")
|
|
false
|
|
end
|
|
rescue StandardError
|
|
@error = I18n.t("site_settings.errors.invalid_object")
|
|
false
|
|
end
|
|
|
|
def error_message
|
|
@error
|
|
end
|
|
end
|