akkounts/app/controllers/admin/settings_controller.rb
Râu Cao fc2bec6246
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Make default user services configurable by admin
2024-09-05 11:11:32 +02:00

51 lines
1.0 KiB
Ruby

class Admin::SettingsController < Admin::BaseController
before_action :set_current_section
def index
end
def update_settings
@errors = ActiveModel::Errors.new(Setting.new)
changed_keys = []
setting_params.keys.each do |key|
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 = clean_param(key)
unless setting.valid?
@errors.merge!(setting.errors)
end
end
if @errors.any?
render :show and return
end
changed_keys.each do |key|
Setting.send("#{key}=", clean_param(key))
end
end
private
def set_current_section
@current_section = :settings
end
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