2016-05-11 37 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如何調用中間件,但仍然不知道,這裏是路線:

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

這是正確的。 –