新注册用户将被重定向到密码重置屏幕

时间:2016-11-19 12:49:44

标签: laravel-5 forgot-password

我对Laravel很陌生并且已经被困了2天了 - 我会感激一些指导。

我正在使用Laravel 5.3的默认开箱即用用户身份验证系统。现有管理员用户在幕后自动创建新用户 - 我将及时隐藏用户注册页面。我还成功设置了中间件来检查用户是否是新注册的(通过查找我已添加到迁移中的null'last_logged_in_date')。

我想要发生的一切是将新注册用户重定向到Laravel附带的密码重置屏幕(再次,我将创建一个专用页面)。我希望这发生在中间件文件中。到目前为止,我的中间件看起来像这样:

iterate

我不确定在上面的评论所指示的位置输入什么代码。我试过sendResetLinkEmail($ request);等,并导入我虽然是正确的类但我总是最终调用未定义的函数App \ Http \ Middleware \ sendResetLinkEmail()消息,无论我在我的班级顶部使用什么。

我哪里错了?谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为您还没有定义sendResetLinkEmail($request)功能。您可以这样做,或者您可以使用它创建一个新类,然后调用该类。 调用特征SendsPasswordResetEmails,然后使用$this访问它,因为特征不是类,您无法直接访问其成员。

<?php

namespace App\Http\Middleware;

use Closure;

use App\Http\Controllers\Auth;

use Illuminate\Foundation\Auth\SendsPasswordResetEmails;

class CheckIfNewUser
{
     use SendsPasswordResetEmails;
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request, Closure $next)
    {
        $user = $request->user();

        if (! is_null($user->last_logged_in_date )) {
            return $next($request);
        }

        // This is where I'm stuck!!!
        //EDIT
        //return $this->SendsPasswordResetEmails->sendResetLinkEmail($request);
        return $this->sendResetLinkEmail($request);

    }
}