diff --git a/app/controllers/admin/settings/registrations_controller.rb b/app/controllers/admin/settings/registrations_controller.rb index 4c6cb83..3887de8 100644 --- a/app/controllers/admin/settings/registrations_controller.rb +++ b/app/controllers/admin/settings/registrations_controller.rb @@ -9,4 +9,12 @@ class Admin::Settings::RegistrationsController < Admin::SettingsController success: "Settings saved" } end + + private + + def setting_params + params.require(:setting).permit([ + :reserved_usernames, default_services: [] + ]) + end end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 0ac029b..496fb9a 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -9,11 +9,12 @@ class Admin::SettingsController < Admin::BaseController changed_keys = [] setting_params.keys.each do |key| - next if setting_params[key].nil? || - (Setting.send(key).to_s == setting_params[key].strip) + next if clean_param(key).nil? || + (Setting.send(key).to_s == clean_param(key)) + changed_keys.push(key) setting = Setting.new(var: key) - setting.value = setting_params[key].strip + setting.value = clean_param(key) unless setting.valid? @errors.merge!(setting.errors) end @@ -24,7 +25,8 @@ class Admin::SettingsController < Admin::BaseController end changed_keys.each do |key| - Setting.send("#{key}=", setting_params[key].strip) + + Setting.send("#{key}=", clean_param(key)) end end @@ -37,4 +39,12 @@ class Admin::SettingsController < Admin::BaseController def setting_params params.require(:setting).permit(Setting.editable_keys.map(&:to_sym)) end + + def clean_param(key) + if Setting.get_field(key)[:type] == :string + setting_params[key].strip! + else + setting_params[key] + end + end end diff --git a/app/views/admin/settings/registrations/show.html.erb b/app/views/admin/settings/registrations/show.html.erb index 0028c15..b54b1b2 100644 --- a/app/views/admin/settings/registrations/show.html.erb +++ b/app/views/admin/settings/registrations/show.html.erb @@ -9,18 +9,35 @@ <%= render partial: "admin/settings/errors", locals: { errors: @errors } %> <% end %> - +
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb index db345d8..2ee5038 100644 --- a/spec/models/setting_spec.rb +++ b/spec/models/setting_spec.rb @@ -8,14 +8,16 @@ RSpec.describe Setting, type: :model do Setting.ejabberd_enabled = true Setting.email_enabled = false Setting.gitea_enabled = false + Setting.lndhub_enabled = true Setting.mastodon_enabled = true Setting.mediawiki_enabled = false + Setting.nostr_enabled = false Setting.remotestorage_enabled = true end it "contains all enabled services" do expect(Setting.available_services).to eq(%w[ - discourse ejabberd mastodon remotestorage + discourse ejabberd lndhub mastodon remotestorage ]) end end