2015-07-21 100 views
3

(我之前问过这个问题,并找到了一种方法,工作了一段时间,但很快失控。所以现在我正在寻找一个完美的解决方案要实现这一点,Laravel的方式。)Laravel 5多个“仪表板”路线的管理员和经理

这个问题很简单,当管理员去http://example.com/dashboard他们应该看到管理仪表板,当经理进入相同的链接,他应该看到经理仪表板。

我之前用过的方法是调用pagecontroller,然后根据用户角色调用相关的管理员或经理的仪表板控制器。

// ROUTES.php 
    Route::group(['middleware' => 'auth'], function() { 
     Route::get('dashboard', '[email protected]'); 
     Route::get('users', '[email protected]'); 
    }); 

    // PagesController 
     public function dashboard(){ 

      if($this->user->isAdmin()){ 
       return $controller = app()->make('App\Http\Controllers\Admin\dashboard')->index(); 
      } 
      if($this->user->isManager()){ 
        return $controller = app()->make('App\Http\Controllers\Manager\dashboard')->index(); 
       } 
     } 

现在这种方法的问题是我不能再调用仪表板控制器上的中间件,因为该过程不涉及调用内核。

我非常确定必须有一种方法来实现这样的基本功能,如果有人能够解决这个问题,我将非常感激。

回答

2

我认为这不是Laravel默认功能的原因,因为它有点违背什么路线应该代表。换句话说,这个不是Laravel路。为什么不根据他们的角色重定向用户?

// ROUTES.php 
Route::group(['middleware' => 'auth'], function() { 
    Route::get('dashboard', function() { 
     if($this->user->isAdmin()) 
      return redirect('/dashboard/admin'); 
     if($this->user->isManager()) 
      return redirect('/dashboard/manager'); 

     return redirect('/home'); 
    }); 

    Route::get('dashboard/admin', 'Admin\[email protected]'); 
    Route::get('dashboard/manage', 'Manager\[email protected]'); 
    Route::get('users', '[email protected]'); 
});