Don't require `current_password` for settings if user doesn't have one

This commit is contained in:
Emi Matchu 2024-04-08 04:13:07 -07:00
parent 0f5bb2a861
commit f6d3992045
2 changed files with 18 additions and 9 deletions

View File

@ -24,7 +24,13 @@ class AuthUsersController < ApplicationController
def update
@auth_user = load_auth_user
if @auth_user.update_with_password(auth_user_params)
# If the user has a password, then the `current_password` field is required
# when updating. If not, then it's not!
success = @auth_user.uses_password? ?
@auth_user.update_with_password(auth_user_params) :
@auth_user.update(auth_user_params)
if success
# NOTE: Changing the password will sign you out, so make sure we stay
# signed in!
bypass_sign_in @auth_user, scope: :auth_user

View File

@ -38,14 +38,17 @@
</div>
</fieldset>
<fieldset>
<div class="field">
<%= f.label :current_password %>
<span class="hint">We need your current password to confirm your changes.</span>
<br />
<%= f.password_field :current_password, autocomplete: "current-password" %>
</div>
</fieldset>
<%# Current password is only required if you have one! %>
<% if @auth_user.uses_password? %>
<fieldset>
<div class="field">
<%= f.label :current_password %>
<span class="hint">We need your current password to confirm your changes.</span>
<br />
<%= f.password_field :current_password, autocomplete: "current-password" %>
</div>
</fieldset>
<% end %>
<div class="actions">
<%= f.submit "Save changes" %>