Laravel Route :: group for Admins

Ok*_*kay 2 routes admin laravel

如果用户是admin,我想验证一些路由。

Route::get( '/user/{data}', 'UserController@getData' );
Route::post( '/user/{data}', 'UserController@postData' );
Run Code Online (Sandbox Code Playgroud)

现在,我在Controller内部创建了它:

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

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

我想使用Route :: group做到这一点,但是如何在route.php中做到这一点呢?

Ale*_*nin 5

您可以创建中间件来检查用户是否是管理员:

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

将其注册在Kernel.php

protected $routeMiddleware = [
    ....
    'is.admin' => \App\Http\Middleware\IsAdmin::class,
];
Run Code Online (Sandbox Code Playgroud)

然后将其应用于路由组:

Route::group(['middleware' => 'is.admin'], function () {
    Route::get('/user/{data}', 'UserController@getData');
    Route::post('/user/{data}', 'UserController@postData');
});
Run Code Online (Sandbox Code Playgroud)