forked from fixin.me/fixin.me
Without this guard, the last admin in the system could delete their own account, making the application unmanageable. This adds a model method `User#sole_admin?`, a controller guard in `RegistrationsController#destroy`, and disables the delete button in the profile edit view when the current user is the only remaining admin. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
<% content_for :navigation, flush: true do %>
|
|
<%= link_to svg_tag('pictograms/arrow-left-bold-outline', t(:back)),
|
|
request.referer.present? ? :back : root_path, class: 'tab' %>
|
|
<% end %>
|
|
|
|
<div class="rightside-area buttongrid">
|
|
<%= image_button_to_if !current_user.sole_admin?, t('.delete'), 'account-remove-outline',
|
|
user_registration_path, form_class: 'tools-area', method: :delete, data: {turbo: false},
|
|
onclick: {confirm: t('.confirm_delete')} %>
|
|
</div>
|
|
|
|
<%= labeled_form_for resource, url: registration_path(resource),
|
|
html: {method: :patch, class: 'main-area'} do |f| %>
|
|
|
|
<%= f.email_field :email, size: 30, autofocus: true, autocomplete: 'off' %>
|
|
<% if resource.pending_reconfirmation? %>
|
|
<%= f.text_field :unconfirmed_email, readonly: true,
|
|
confirmation_sent_at: l(resource.confirmation_sent_at) %>
|
|
<% end %>
|
|
|
|
<%= f.select :status, User.statuses, readonly: true %>
|
|
|
|
<%= f.password_field :password, size: 30, autocomplete: 'new-password',
|
|
minlength: @minimum_password_length %>
|
|
<%= f.password_field :password_confirmation, size: 30, autocomplete: 'off',
|
|
minlength: @minimum_password_length %>
|
|
|
|
<%= f.submit %>
|
|
<% end %>
|