2016-11-19 83 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