首页 文章

如何覆盖/添加Laravel中的密码代理?

提问于
浏览
8

使用Laravel 5.2

我需要覆盖几个功能/在密码重置过程中添加一些新东西 . 我知道我可以使用密码控制器来覆盖 Illuminate\Foundation\Auth\ResetsPasswords 中的功能 .

我还需要在 Illuminate\Contracts\Auth\PasswordBroker 进行更改 . 我的目标是设置一个邀请电子邮件,用于设置使用现有密码重置功能的初始密码 . 唯一的问题是函数 sendResetLink .

此函数获取密码令牌并通过重置密码电子邮件视图发送电子邮件 . 我仍然需要密码重置功能,但我无法收到包含“重置密码”字样的邀请电子邮件 .

我怎样才能做到这一点?我想我可以复制和调整重置类的功能以使用电子邮件的邀请视图,但我无法弄清楚如何扩展代理类以使其工作 .

1 回答

  • 2

    我正在努力做同样的事情 . 我在我的自定义PasswordBroker中添加了一个setEmailView()方法,并在AuthController中发送重置链接之前调用它,但这打破了常规密码重置功能 .
    所以,我废弃了所有这些,并采取了一种更简单的方法 . 在AuthController.php中,将一个变量注入密码模板 .

    view()->composer('auth.emails.password', function($view) {
        $view->with(['register'=>true]);
    });
    Password::sendResetLink(['email'=>$data['email']], function($message) {
        $message->subject('Registration Email');
    });
    

    然后,在模板auth / emails / password.blade.php中

    @if ( isset($register) )
        Whatever you want to say in registration Email.
    @else
        Normal password reset Email here.
    @endif
    

相关问题