2016-09-18 9 views
2

ユーザーがadminの場合、いくつかのルートを認証したいと考えています。私はルート::グループでそれをしたいと思いLaravel Route :: Adminsのグループ

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の中でどのようにそれを行うことができます。

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

今、私はコントローラ内部でそれを作ったのですか?

答えて

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}', '[email protected]'); 
}); 

APP/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