【问题标题】:Laravel 5.4 - choose route based on roleLaravel 5.4 - 根据角色选择路线
【发布时间】:2017-08-28 21:23:40
【问题描述】:

我有以下代码:

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

        dd($user);
        Route::get('/', 'SiteController@index');
    });

$userAppServiceProvider中创建,但在Route中无法访问:

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]);
        });
    }

我是否有理由根据 role(包含在 $user 中)选择将在 SiteController 中调用哪个函数?

我想做这样的事情:

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

Route::get('/', "SiteController@{$method}");

这可能吗?

【问题讨论】:

  • 为具有角色的路由定义一个中间件:laravel.com/docs/5.4/middleware
  • 我有点迷路了 - 我看不到如何将 user 传递给中间件(在 AppServiceProvider 中创建的中间件

标签: laravel laravel-5 laravel-5.4


【解决方案1】:

你可以试试这样的

if($user->role === 'dev)
   Route::get('/', "SiteController@index");
else
   Route::get('/', "SiteController@admin");

另一种简单的方法是,如果您在站点控制器中定义一个函数来检查 $user 是什么,然后返回另一个类似这样的路由:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-01
    • 2017-09-03
    • 2021-11-16
    • 2017-08-10
    • 2018-03-29
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多