docbrown/app/controllers/api/v0/admin/configs_controller.rb
Michael Kohl 5406b0576e
Split Settings::Authentication from SiteConfig (#13095)
* Split Settings::Authentication from SiteConfig

* Move specs

* Sort fields

* Update settings usages

* Update recaptcha usages

* Add data update script

* Update spec

* Rename SiteConfigParams concern

* Fixes, new route, new controller

* Controller and service refactoring

* More controller and service updates

* Spec updates

* More spec fixes

* Move file

* Fix FeedbackMessagesController

* Update admin/configs_spec

* Fix remaining specs in admin/configs_spec

* Fix configs API

* Formatting

* Clean up old service object

* Various fixes

* Update DUS

* Add model argument to admin_config_label

* Fix key name

* Fix specs

* Add distinct request caches for settings classes

* Fix e2e tests

* Fix remaining system spec

* Make DUS idempotent

* Move routes block

* Cleanup

* Switch to ActiveSupport::CurrentAttributes

* Pinned rails-settings-cached

* Update e2e test

* Update lib/data_update_scripts/20210316091354_move_authentication_settings.rb

Co-authored-by: rhymes <rhymes@hey.com>

* Add guard to DUS

* Temporarily re-add two SiteConfig fields

* Fix config show view

Co-authored-by: rhymes <rhymes@hey.com>
2021-04-12 09:41:09 +02:00

43 lines
1.4 KiB
Ruby

module Api
module V0
module Admin
class ConfigsController < ApiController
include SettingsParams
before_action :authenticate_with_api_key_or_current_user!
before_action :authorize_super_admin
skip_before_action :verify_authenticity_token, only: %i[update]
def show
@site_configs = SiteConfig.all
end
def update
# NOTE: citizen428 - this is not going to scale but I want to wait
# until we extract at least one more settings model before deciding
# how to change this.
settings_result = ::Settings::Upsert.call(settings_params)
auth_settings_result = ::Authentication::SettingsUpsert.call(auth_settings_params)
if settings_result.success? && auth_settings_result.success?
@site_configs = SiteConfig.all + Settings::Authentication.all
Audit::Logger.log(:internal, @user, params.dup)
bust_content_change_caches
render "show"
else
errors = settings_result.errors + auth_settings_result.errors
render json: { error: errors.to_sentence, status: 422 }, status: :unprocessable_entity
end
end
private
def auth_settings_params
params
.require(:site_config)
.permit(*::Settings::Authentication.keys, :providers_to_enable)
end
end
end
end
end