Я использую драгоценный камень 'Devise' для сброса пароля моего пользователя. Я получаю неожиданный ответ, когда пытаюсь сбросить сброс пароля моего пользователя, как показано ниже:
Started PUT "/users/password" for 127.0.0.1 at 2020-07-12 12:37:05 -0300
Processing by Users::PasswordsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"aGFb1LDvwSZjI+xUY6EscmEhhBdu+tqGqgnRZZY4r2xxDauMhMBvCM80/lX7RR66T4P8ZEB/9M48oCKZ9qPlKQ==", "user"=>{"reset_password_token"=>"[FILTERED]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Alterar minha senha"}
User Load (1.1ms) SELECT `users`.* FROM `users` WHERE `users`.`reset_password_token` = '266d3fa84febf8e888c901db6bc6075b741fb3759f4e508f93a3b00b823f5088' ORDER BY `users`.`id` ASC LIMIT 1
(0.4ms) BEGIN
User Exists (0.7ms) SELECT 1 AS one FROM `users` WHERE `users`.`phone` = '(61) 99634-0978' AND `users`.`id` != 2 LIMIT 1
Role Load (22.8ms) SELECT `roles`.* FROM `roles` INNER JOIN `role_users` ON `roles`.`id` = `role_users`.`role_id` WHERE `role_users`.`user_id` = 2 AND `roles`.`name` = 'driver' LIMIT 1
User Update (0.9ms) UPDATE `users` SET `encrypted_password` = '$2a$11$SmfSjRNv.G4ByGzw0hlQdOcYCS2Gn6Y6R39gSePHtsaw1PMTmqmnW', `reset_password_token` = NULL, `reset_password_sent_at` = NULL, `updated_at` = '2020-07-12 15:37:06' WHERE `users`.`id` = 2
(60.8ms) COMMIT
(0.4ms) BEGIN
(0.5ms) COMMIT
Completed 401 Unauthorized in 962ms (ActiveRecord: 107.4ms)
Started GET "/users/sign_in" for 127.0.0.1 at 2020-07-12 12:37:06 -0300
Processing by Devise::SessionsController#new as HTML
Rendering devise/sessions/new.html.erb within layouts/application
Rendered devise/shared/_links.html.erb (2.8ms)
Rendered devise/sessions/new.html.erb within layouts/application (32.2ms)
Completed 200 OK in 98ms (Views: 73.0ms | ActiveRecord: 0.0ms)
То есть мой пользователь был обновлен, но я получил уведомление о несанкционированном доступе и начал запрос GET в / users / sign_in вместо сообщения об ошибке или успехе. Я предоставляю пароль и password_confirmation , чтобы изменить пароль моего пользователя, как показано ниже:
<h2>Change password</h2>
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
<%= devise_error_messages! %>
<%= f.hidden_field :reset_password_token %>
<div class="field">
<%= f.label :password, "New password" %><br />
<% if @minimum_password_length %>
<em>(Minimum of<%= @minimum_password_length %> characters)</em><br />
<% end %>
<%= f.password_field :password, autofocus: true, autocomplete: "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation, "Confirm new password" %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>
<div class="actions">
<%= f.submit "Change my password" %>
</div>
<% end %>
И я определил метод в моем password_controller .rb , чтобы сообщить об успехе, следующим образом:
def after_resetting_password_path_for(_resource)
render json: { message: 'Success !'}
end
Что мне нужно исправить в этом коде, чтобы сбросить пароль моего пользователя?