2016-05-11 11 views
0

私は5.0で別のlaravelアプリケーションのミドルウェアクラスを持っています。これは、ユーザーログイン時に呼び出されます。5.2の別のアプリケーションで使用したいクラスです。laravel 5.2ログインするたびにミドルウェアを呼び出す方法は?

<?php namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Contracts\Auth\Guard; 
use Illuminate\Contracts\Routing\Middleware; 
use Illuminate\Contracts\Routing\ResponseFactory; 

use App\AssignedRoles; 

class Admin implements Middleware { 

    /** 
    * The Guard implementation. 
    * 
    * @var Guard 
    */ 
    protected $auth; 

    /** 
    * The response factory implementation. 
    * 
    * @var ResponseFactory 
    */ 
    protected $response; 

    /** 
    * Create a new filter instance. 
    * 
    * @param Guard $auth 
    * @param ResponseFactory $response 
    * @return void 
    */ 
    public function __construct(Guard $auth, 
           ResponseFactory $response) 
    { 
     $this->auth = $auth; 
     $this->response = $response; 
    } 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($this->auth->check()) 
     { 
      $admin = 0; 
      $user_roles = AssignedRoles::join('roles','role_user.role_id','=','roles.id') 
      ->where('user_id', $this->auth->user()->id)->select('roles.is_admin')->get(); 
      foreach($user_roles as $item) 
      { 
       if($item->is_admin==1) 
       { 
        $admin=1; 
       } 
      } 
      if($admin==0){ 
       return $this->response->redirectTo('/'); 
      } 
      return $next($request); 
     } 
     return $this->response->redirectTo('/'); 
    } 

} 

は、私はすでにkernel.phpに追加しています

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'admin' => \App\Http\Middleware\Admin::class, 
    'age' => \App\Http\Middleware\Age::class,  
]; 

は、私はそれがミドルウェアを呼び出すが、まだわかりませんどのように5.0に合図アプリを見つけM」、ここでのルートです:

Route::get('/', '[email protected]'); 
Route::get('home', '[email protected]'); 
Route::get('about', '[email protected]'); 
Route::get('contact', '[email protected]'); 

Route::pattern('id', '[0-9]+'); 
Route::get('news/{id}', '[email protected]'); 
Route::get('video/{id}', '[email protected]'); 
Route::get('photo/{id}', '[email protected]'); 

Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
]); 

if (Request::is('admin/*')) 
{ 
    require __DIR__.'/admin_routes.php'; 
} 

ログインするたびにどのように実行できますか?

答えて

1

これを試してみてください:それは場合に役立ちます

Route::group(['middleware' => 'your-middleware'], function() { 
    Route::post('/login', '[email protected]'); 
}); 

は、参照してください。

+0

を試してみてください。 –

0

はこれが正しいこの

Route::get('page', ['middleware' => 'auth', [email protected]]); 
関連する問題