Skip to content

Commit e65b7ec

Browse files
committed
don't allow self-deletion for an account that (still) uses 2fa
1 parent 6418a35 commit e65b7ec

3 files changed

Lines changed: 13 additions & 1 deletion

File tree

app/controllers/users/registrations_controller.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def do_delete
3737
elsif @user.moderator?
3838
@user.errors.add(:base, I18n.t('users.errors.no_mod_self_delete'))
3939
render :delete
40+
elsif @user.enabled_2fa
41+
@user.errors.add(:base, I18n.t('users.errors.no_2fa_self_delete'))
42+
render :delete
4043
elsif params[:username] != @user.username
4144
@user.errors.add(:base, I18n.t('users.errors.self_delete_wrong_username'))
4245
render :delete

app/views/devise/registrations/edit.html.erb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,14 @@
6666
<p class="has-color-red has-font-size-caption">
6767
Moderators and admins cannot be self-deleted. Contact support if you wish to delete your account.
6868
</p>
69-
<% else %>
69+
<% elsif current_user.enabled_2fa %>
70+
<%= link_to 'javascript:void(8)', class: 'button is-outlined is-danger', disabled: true do %>
71+
Delete my account &raquo;
72+
<% end %>
73+
<p class="has-color-red has-font-size-caption">
74+
Your account uses two-factor authentication (2FA). In order to delete your account, you must first disable 2FA.
75+
</p>
76+
<% else %>
7077
<%= link_to delete_account_path, class: 'button is-outlined is-danger' do %>
7178
Delete my account &raquo;
7279
<% end %>

config/locales/strings/en.users.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ en:
55
Admin accounts cannot be self-deleted. Contact support.
66
no_mod_self_delete: >
77
Moderator accounts cannot be self-deleted. Contact support.
8+
no_2fa_self_delete: >
9+
Accounts using 2FA cannot be self-deleted. Disable 2FA first.
810
self_delete_wrong_username: >
911
The username you entered was incorrect.

0 commit comments

Comments
 (0)