2017-08-30 35 views
1

如果用戶未確認其電子郵件,我想將用戶重定向至頁面。如果用戶未在Laravel中確認電子郵件,則重定向至頁面

我可以很容易地做到這一點通過在中間件這樣做:

if(Auth::user()->confirmed == 0) 
    { 
     return redirect("somewhereelse"); 
    } 

不過,我有15箇中間件,我不想使用此代碼雜亂他們。

有沒有辦法將這樣的規則應用到用戶需要登錄的整個頁面,而無需將其添加到每個中間件?

+2

難道你不只是爲此創造另一箇中間件,並首先運行? –

+0

@SamCollins這是一個有趣的可能性,但它在web.php中增加了另一層,但我想這是唯一的方法... – prgrm

回答

1

我可以建議你2種方式:

編輯你的「RedirectIfAuthenticated」,如果你有一個,到

if(Auth::guard($guard)->check()) { 
    if(Auth::user()->confirmed == 0){ 
     return redirect("somewhereelse"); 
    } 
    return redirect('authenticatedarea'); 
} 

您可以檢查用戶登錄,如果是這樣,你可以檢查他是否也使用相同的中間件驗證了電子郵件。

否則,您可以使用此檢查創建另一箇中間件。

我推薦第一個,因爲你可以在一箇中間件中包裝2個簡單的檢查...最終,如果你需要,你可以稍後拆分它們。

相關問題