Как создать ссылку для восстановления пароля с помощью устройства? - PullRequest
0 голосов
/ 19 марта 2020

Я использую Mailer и MailCatcher.

Когда администратор регистрирует клиента в системе, он должен получить электронное письмо со ссылкой для восстановления своего пароля

1 Ответ

1 голос
/ 19 марта 2020

Ты изобретаешь колесо. У Devise уже есть Приглашающий модуль , который делает то, что вы ищете.

После выполнения инструкций по установке вы просто добавляете ссылку на new_user_invitation_path, где администраторы могут приглашать других пользователей. Если вы хотите заблокировать приглашения, чтобы только администраторы могли приглашать пользователей, просто настройте контроллер:

class MyInvitationsController < Devise::InvitationsController
  before_action :authorize_admin!, only: [:new, :create]

  def authorize_admin!
    # if you are using Pundit
    authorize resource_class, :invite?

    # or if you're reinventing the authorization wheel
    redirect_to '/somewhere'
  end
end

Если вы действительно хотите заново изобрести колесо, сделайте это правильно. Devise не выполняет сброс пароля в Devise::RegistrationsController - и вы не должны.

Сброс пароля выполняется в Devise::PasswordsController:

                               Prefix Verb   URI Pattern                                                                              Controller#Action                                                               
                    new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                                      PUT    /users/password(.:format)                                                                devise/passwords#update
                                      POST   /users/password(.:format)                                                                devise/passwords#create

Ссылка в электронном письме для сброса пароля /users/password/edit , Который вы можете увидеть в электронной почте .

edit_password_url(@resource, reset_password_token: @token)
...