重用密码代理逻辑以发送激活电子邮件

时间:2015-10-06 11:00:42

标签: php laravel laravel-5 illuminate-container

我有一个简单的CRUD应用程序可以通过表单添加用户,理想的流程是

  • 管理员使用用户名和密码填写表单
  • 向用户发送一封电子邮件,其中包含设置密码的链接
  • 用户已登录

现在在一天结束时我真正想要的是PasswordBroker,但是发送emails.passsowrd视图我想要一个不同的视图,其余的逻辑可以是相同的

是否有一种简单的方法可以创建passwordBroker的有效isntace并传递不同的视图?

属性emailWiew受到保护,所以我无法覆盖它,我试图从IoC中创建一个新实例

$tokens = $this->app['auth.password.tokens'];

$users = $this->app['auth']->driver()->getProvider();

$view = "emails.createPassword";

$password =  new PasswordBroker(
    $tokens, $users, $this->app['mailer'], $view
);
dd($users->retrieveByCredentials(["email@user.com"])); //i get null and the user email is valid

$response = $password->sendResetLink(["email@user.com"], function (Message $message) {
    $message->subject("Set your password");
});
dd($response); // I get "passwords.user" wich is an error

但是当我通过电子邮件地址时,我收到了无效的用户错误

任何想法?

1 个答案:

答案 0 :(得分:0)

问题是您没有提供检索凭据的密钥,因此它试图通过名称“0”获取users表中的字段。使用以下内容,它将起作用:

$response = $password->sendResetLink(
    ["email" => "email@user.com"], 
    function (Message $message) {
        $message->subject("Set your password");
});