diff --git a/app/controllers/settings/deletes_controller.rb b/app/controllers/settings/deletes_controller.rb index dd18b4c2fe8d995d67c3abaa210db5e9cd5280fe..80002b995e58a20eff26ee9257b3fc32957aa406 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 42f6ab3db474a0435fb16783703f92ef1d533dc5..36c37fae08ffbdd5f98877c1184d70f2bae50b46 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 cbaa75ae04f6c24230d7763292a3e89a016e4238..38d4349cb6a841d98f8be35363ab7ad5fd0e4af5 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 bffb7052acbfa0d37873d7f1bc433670a9bb06b4..7b78b6cdb1c52d35aaba55b7257f9ae6754bfa4a 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 b9c7c3068cbc6ee0d015f2478d39333661e27570..9b55090df224a492103f1ac9d39c1378689c2882 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