2017-08-28 37 views
0

我有以下代码:Laravel 5.4 - 选择航线基于角色

Route::group(['middleware' => ['auth']], function() { 

     dd($user); 
     Route::get('/', '[email protected]'); 
    }); 

$用户AppServiceProvider创建的,但它不是在路线访问:

public function boot() 
    { 
     view()->composer('layouts.main', function($view){ 

      $employees  = \App\Bamboo::getEmployees(); 
      $employeeIndex = \App\Bamboo::getEmployeeIndex(auth()->user()->email, $employees); 

      $view->with('employees', $employees); 
      $view->with('user', $employees['employees'][$employeeIndex]); 
     }); 
    } 

是否有一个为什么我选择哪个函数将被调用SiteController基于角色(这是包含在$用户)?

我想要做这样的事情:

$method = $user->role === 'dev' ? 'index' : 'admin'; 

Route::get('/', "[email protected]{$method}"); 

这可能吗?

+2

定义具有角色的路由的中间件:https://laravel.com/docs/5.4/middleware – Troyer

+0

我有点在这里丢失 - 我没有看到一种方式,我可以通过**用户**到中间件(在AppServiceProvider中创建的一个 – Sasha

回答

0

你可以尝试这样的事情

if($user->role === 'dev) 
    Route::get('/', "[email protected]"); 
else 
    Route::get('/', "[email protected]"); 

如果你定义的现场控制器,它检查$用户是什么样的功能另一种简单的方法是,然后返回这样的另一条路线:

public function getRoute(Request $r){ 
    if(Auth::user()->role === 'dev') 
    return $this->index($r); 
    else 
    return $this->admin($r); 
}