2016-09-18 110 views
2

我想認證一些路線,如果用戶是管理員。現在Laravel路線::組管理員

Route::get('/user/{data}', '[email protected]'); 
Route::post('/user/{data}', '[email protected]'); 

,我做了控制器內部:

public function getData($data = 'one') 
{ 
    if (Auth::user()->permission == 'admin') { 
     //... 
    } else { 
     //... 
    } 
} 

public function postData(Request $request, $data = 'one') 
{ 
    if (Auth::user()->permission == 'admin') { 
     //... 
    } else { 
     //... 
    } 
} 

我想和路線::組進行,但我怎麼能做到這一點的routes.php文件?

回答

0

您可以create middleware如果用戶是管理員將檢查:

class IsAdmin 
{ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::user()->permission == 'admin') { 
      return $next($request); 
     } 

     return redirect()->route('some.route'); // If user is not an admin. 
    } 
} 

註冊它Kernel.php

protected $routeMiddleware = [ 
    .... 
    'is.admin' => \App\Http\Middleware\IsAdmin::class, 
]; 

然後將它應用到一個路由組:

Route::group(['middleware' => 'is.admin'], function() { 
    Route::get('/user/{data}', '[email protected]'); 
    Route::post('/user/{data}', '[email protected]'); 
}); 
+1

謝謝!有用! – Okay

0

你可以指定一個路由組並給它一箇中間件

https://laravel.com/docs/5.3/routing#route-groups

https://laravel.com/docs/5.3/middleware

https://laravel.com/docs/5.3/middleware#assigning-middleware-to-routes

實施例:

routes.php文件

Route::group(['middleware' => 'admin'], function() { 
    Route::get('/user/{data}', '[email protected]'); 
    Route::post('/user/{data}', 'UserCon[email protected]'); 
}); 

應用程序/ HTTP /中間件/ admin.php的

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Admin 
{ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::user()->permission !== 'admin') { 
      // 
     } else { 
      // 
     } 

    } 
} 
+0

謝謝!在內核註冊後,它的工作原理! – Okay