2016-11-19 84 views
0

我对Laravel来说相当陌生,并且被困在一个问题上2天 - 我很感激一些指导。新的注册用户将被重定向到密码重置屏幕

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

我想要发生的一切都是让一个新的注册用户重定向到随Laravel一起提供的密码重置屏幕(再次,我将创建一个专用页面)。我希望在中间件文件中发生这种情况。到目前为止,我的中间件如下所示:

<?php 

namespace App\Http\Middleware; 

use Closure; 

use App\Http\Controllers\Auth; 

class CheckIfNewUser 
{ 
    /** 
    * 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!!! 

    } 
} 

我不确定在上述注释所指示的位置输入什么代码。我试过sendResetLinkEmail($ request);等等,并导入了我虽然是正确的类,但我总是最终与调用未定义的函数App \ Http \ Middleware \ sendResetLinkEmail()消息,而不管我在我的课程顶部使用什么。

我哪里错了?谢谢!

+0

你可以发布给你错误的代码吗?我的意思是你使用sendResetLinkEmail函数的代码和顶部使用的代码 – xhulio

+0

感谢您的回复。我想我的最后一次尝试是使用sendResetLinkEmail($ request)在顶部使用App \ Http \ Controllers \ Auth ... – Ows

回答

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); 

    } 
} 
+0

谢谢,但Laravel已经为您提供了SendResetLinkEmail函数的代码 - 我相信这是一个TRAIT。我只是不能为我的生活引用它从我的中间件... – Ows

+0

@Ows你有没有尝试过在你的中间件上使用SendsPasswordResetEmails?在课堂宣言后设置 – xhulio

+0

@Ows我编辑了我的问题。希望它有帮助 – xhulio