From e775d22b981ac39be77a5a3815e1e31823c39dbe Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Tue, 4 Jan 2022 21:50:16 +0530 Subject: [PATCH] feat: add new view and controller to display app configs together (#3563) fixes: #3578 --- .../super_admin/app_configs_controller.rb | 21 +++++++++ .../super_admin/app_configs/show.html.erb | 25 ++++++++++ .../application/_navigation.html.erb | 8 +++- config/routes.rb | 2 + .../super_admin/app_config_controller_spec.rb | 47 +++++++++++++++++++ 5 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 app/controllers/super_admin/app_configs_controller.rb create mode 100644 app/views/super_admin/app_configs/show.html.erb create mode 100644 spec/controllers/super_admin/app_config_controller_spec.rb diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb new file mode 100644 index 000000000..2899a7def --- /dev/null +++ b/app/controllers/super_admin/app_configs_controller.rb @@ -0,0 +1,21 @@ +class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController + def show + @allowed_configs = %w[FB_APP_ID FB_VERIFY_TOKEN FB_APP_SECRET] + # ref: https://github.com/rubocop/rubocop/issues/7767 + # rubocop:disable Style/HashTransformValues + @fb_config = InstallationConfig.where(name: @allowed_configs) + .pluck(:name, :serialized_value) + .map { |name, serialized_value| [name, serialized_value['value']] } + .to_h + # rubocop:enable Style/HashTransformValues + end + + def create + params['app_config'].each do |key, value| + i = InstallationConfig.where(name: key).first_or_create(value: value, locked: false) + i.value = value + i.save! + end + redirect_to super_admin_app_config_url + end +end diff --git a/app/views/super_admin/app_configs/show.html.erb b/app/views/super_admin/app_configs/show.html.erb new file mode 100644 index 000000000..6fb4a44fa --- /dev/null +++ b/app/views/super_admin/app_configs/show.html.erb @@ -0,0 +1,25 @@ +<% content_for(:title) do %> + App Config +<% end %> + +
+ <%= form_with url: super_admin_app_config_url , method: :post do |form| %> + <% @allowed_configs.each do |c| %> +
+
+ <%= form.label "app_config[#{c}]", c %> +
+
+ <%= form.text_field "app_config[#{c}]", value: @fb_config[c] %> +
+
+ <% end %> +
+ <%= form.submit "Submit" %> +
+ <% end %> +
diff --git a/app/views/super_admin/application/_navigation.html.erb b/app/views/super_admin/application/_navigation.html.erb index f8a9f6f91..d55927c86 100644 --- a/app/views/super_admin/application/_navigation.html.erb +++ b/app/views/super_admin/application/_navigation.html.erb @@ -32,8 +32,14 @@ as defined by the routes in the `admin/` namespace <%= link_to "Dashboard", super_admin_root_url %> + + + <% Administrate::Namespace.new(namespace).resources.each do |resource| %> - <% next if ["account_users", "agent_bots", "dashboard", "devise/sessions"].include? resource.resource %> + <% next if ["account_users", "agent_bots", "dashboard", "devise/sessions", "app_configs" ].include? resource.resource %>