Laravel 5 多个 "dashboard" 管理员和经理路由
Laravel 5 multiple "dashboard" route for admins and managers
(我之前问过这个问题,确实找到了一个解决方法,它工作了一段时间,但很快就失控了。所以现在我正在寻找一个完美的解决方案来实现这个,Laravel 方式。)
问题很简单,当管理员转到 http://example.com/dashboard 他们应该看到管理仪表板,当经理转到相同的 link 他应该看到经理仪表板。
我之前使用的方法是调用 pagecontroller
,然后根据用户角色调用相关管理员或经理的仪表板控制器。
// ROUTES.php
Route::group(['middleware' => 'auth'], function () {
Route::get('dashboard', 'PagesController@dashboard');
Route::get('users', 'PagesController@manageUsers');
});
// 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();
}
}
现在这种方法的问题是我不能再调用仪表板控制器上的中间件,因为该过程不涉及调用内核。
我很确定一定有办法实现这样的基本功能,如果有人能解决这个问题,我将不胜感激。
我认为这不是 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\dashboard@index');
Route::get('dashboard/manage', 'Manager\dashboard@index');
Route::get('users', 'PagesController@manageUsers');
});
(我之前问过这个问题,确实找到了一个解决方法,它工作了一段时间,但很快就失控了。所以现在我正在寻找一个完美的解决方案来实现这个,Laravel 方式。)
问题很简单,当管理员转到 http://example.com/dashboard 他们应该看到管理仪表板,当经理转到相同的 link 他应该看到经理仪表板。
我之前使用的方法是调用 pagecontroller
,然后根据用户角色调用相关管理员或经理的仪表板控制器。
// ROUTES.php
Route::group(['middleware' => 'auth'], function () {
Route::get('dashboard', 'PagesController@dashboard');
Route::get('users', 'PagesController@manageUsers');
});
// 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();
}
}
现在这种方法的问题是我不能再调用仪表板控制器上的中间件,因为该过程不涉及调用内核。
我很确定一定有办法实现这样的基本功能,如果有人能解决这个问题,我将不胜感激。
我认为这不是 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\dashboard@index');
Route::get('dashboard/manage', 'Manager\dashboard@index');
Route::get('users', 'PagesController@manageUsers');
});