2016-08-25 66 views
3

我試圖讓只有管理員用戶能夠在我的laravel項目中查看導航欄的某些內容。我有一個users表,其中包含'admin'和'user'值組成的角色列,我在中間件中使用這些值來允許管理員用戶訪問管理面板進行CRUD操作。只允許管理員在Laravel中查看頁面

我已經試過:

@if(auth()->check()) 
@if(Auth::user()->get(array('users.role')) == 'admin') 

    'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!' 

@endif 
@endif 

然而,當登錄到「管理員」用戶,我仍然無法看到的只是管理的內容。我對框架相當陌生,但如果有人有任何建議,我將非常感謝!

感謝,

山姆

回答

3

試試這個:

@if (Auth::user() && Auth::user()->role == 'admin') 
    'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!' 
@endif 

Auth::user()相同Auth::check(),它會檢查,如果用戶進行身份驗證。只有在用戶通過身份驗證後,Laravel纔會運行Auth::user()->role == 'admin',這將檢查用戶是否爲管理員。

2

您可以創建一個單獨的管理中間件組:

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

     return redirect('/login'); 
    } 

,這樣就可以保護其中只有管理員允許的路線:

Route::group(['middleware' => ['App\Http\Middleware\Adminmiddleware']], function() { 
      //admin routes 

    }); 

爲您的代碼,你可以檢查:

if(Auth::user()->role == 'admin') 
相關問題