diff --git a/app/controllers/settings/deletes_controller.rb b/app/controllers/settings/deletes_controller.rb index dd18b4c2f..80002b995 100644 --- a/app/controllers/settings/deletes_controller.rb +++ b/app/controllers/settings/deletes_controller.rb @@ -3,6 +3,7 @@ class Settings::DeletesController < ApplicationController layout 'admin' + before_action :check_enabled_deletion before_action :authenticate_user! def show @@ -21,6 +22,10 @@ class Settings::DeletesController < ApplicationController private + def check_enabled_deletion + redirect_to root_path unless Setting.open_deletion + end + def delete_params params.require(:form_delete_confirmation).permit(:password) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 42f6ab3db..36c37fae0 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -13,6 +13,10 @@ module ApplicationHelper Setting.open_registrations end + def open_deletion? + Setting.open_deletion + end + def add_rtl_body_class(other_classes) other_classes = "#{other_classes} rtl" if [:ar, :fa, :he].include?(I18n.locale) other_classes diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml index cbaa75ae0..38d4349cb 100644 --- a/app/views/auth/registrations/edit.html.haml +++ b/app/views/auth/registrations/edit.html.haml @@ -12,7 +12,8 @@ .actions = f.button :button, t('generic.save_changes'), type: :submit -%hr/ +- if open_deletion? + %hr/ -%h6= t('auth.delete_account') -%p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) + %h6= t('auth.delete_account') + %p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) diff --git a/config/settings.yml b/config/settings.yml index bffb7052a..7b78b6cdb 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -14,6 +14,7 @@ defaults: &defaults site_contact_email: '' open_registrations: true closed_registrations_message: '' + open_deletion: true boost_modal: false auto_play_gif: true delete_modal: true diff --git a/spec/controllers/settings/deletes_controller_spec.rb b/spec/controllers/settings/deletes_controller_spec.rb index b9c7c3068..9b55090df 100644 --- a/spec/controllers/settings/deletes_controller_spec.rb +++ b/spec/controllers/settings/deletes_controller_spec.rb @@ -68,5 +68,19 @@ describe Settings::DeletesController do expect(response).to redirect_to '/auth/sign_in' end end + + context do + around do |example| + open_deletion = Setting.open_deletion + example.run + Setting.open_deletion = open_deletion + end + + it 'redirects' do + Setting.open_deletion = false + delete :destroy + expect(response).to redirect_to root_path + end + end end end