2016-07-14 70 views
2

我需要根據應用程序中的其他角色重定向用戶。在MySQL中,我在Users表中添加了「isAdmin」列來檢查用戶是否是admin。我唯一想到的解決方案是根據用戶的類型在同一個刀片上呈現html。例如, 。根據其角色重定向經過身份驗證的用戶

@if(Auth::user()->isAdmin == 1) 
<p>Hello, Admin</p> 
//other html for admin 

@else 
//other html for users 

有沒有更好的方式來做到這一點在更美觀和高效的代碼,因爲這看起來凌亂? 我使用的是這個包(https://github.com/acacha/adminlte-laravel),它使用了Laravel的默認身份驗證系統。

我想在登錄過程中將用戶重定向到兩個不同的刀片,可以說homeUsers.blade.php和admin.blade.php。

回答

2

邏輯是在這裏:最好的方法是創建兩個表一個users和另一roles,並把role_id在用戶表外國key.Then建立一種關係,即一個角色belongsTo用戶。

但是在你的情況下,如果你有兩個視圖,你想顯示一個用於管理員和其他用戶其他用戶按照下面的方法。

創建要在你的情況下使用1)管理員2)homeUsers

@if(Auth::user()->isAdmin == 1) 
    @include('admin') //admin.blade.php 
@else 
@include('homeUsers') //homeUsers.blade.php 
+0

這對我來說似乎是最好的選擇。我已經嘗試了@Daniel提出的解決方案,但它並不適用於我的案例。也許我做錯了什麼,但現在我會用你的解決方案。 – harunB10

+0

@ harunB10我很高興幫助你,歡呼! –

+1

我忘記提及可能有同樣問題的其他人。它應該是'@include('admin')'而不是'@include('admin.blade.php')''。 (不帶擴展名) – harunB10

1

我不知道你使用的是什麼版本Laravel的兩種觀點,但是這似乎應該是你的中間件。

在中間件中檢出RedirectIfAuthenticated.php。然後,您可以執行以下操作。

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->role == 'Admin') 
     { 
      return redirect('/admin'); 
     } 
     else 
     { 
      return redirect('/home') 
     } 
    } 

    return $next($request); 
} 
相關問題