问题描述
我正在创建一个项目,其中我有多种用户类型,例如.super*****、*****、managers 等.一旦用户通过身份验证,系统会检查用户类型并将其发送到相应的控制器.用于此的中间件工作正常.
I am creating a project where i have multiple user types, eg. super*****, *****, managers etc. Once the user is authenticated, the system checks the user type and sends him to the respective controller. The middle ware for this is working fine.
所以当经理去 http://example.com/dashboard 时,他会看到经理仪表板,而当管理员去到他可以看到管理仪表板的同一个链接.
So when manager goes to http://example.com/dashboard he will see the managers dashboard while when ***** goes to the same link he can see the ***** dashboard.
下面的路线组单独工作正常,但放在一起时只有最后一个工作.
The below route groups work fine individually but when placed together only the last one works.
/***** Routes.php ****/ // Super***** Routes Route::group(['middleware' => 'AppHttpMiddlewareSuper*****Middleware'], function () { Route::get('dashboard', 'Super*****dashboard@index'); // Super***** Dashboard Route::get('users', 'Super*****manageUsers@index'); // Super***** Users }); // ***** Routes Route::group(['middleware' => 'AppHttpMiddleware*****Middleware'], function () { Route::get('dashboard', '*****dashboard@index'); // ***** Dashboard Route::get('users', '*****manageUsers@index'); // ***** Users });
我知道我们可以重命名路由,如超级管理员/仪表板和管理员/仪表板,但我想知道是否还有其他方法可以实现干净的路由.有没有人知道任何解决方法?
顺便说一句,我使用的是 LARAVEL 5.1
感谢任何帮助:)
推荐答案
我能想到的最佳解决方案是创建一个控制器来管理用户的所有页面.
The best solution I can think is to create one controller that manages all the pages for the users.
routes.php 文件中的示例:
example in routes.php file:
Route::get('dashboard', 'PagesController@dashboard'); Route::get('users', 'PagesController@manageUsers');
您的 PagesController.php 文件:
your PagesController.php file:
protected $user; public function __construct() { $this->user = Auth::user(); } public function dashboard(){ //you have to define 'isSuper*****' and 'is*****' functions inside your user model or somewhere else if($this->user->isSuper*****()){ $controller = app()->make('Super*****Controller'); return $controller->callAction('dashboard'); } if($this->user->is*****()){ $controller = app()->make('*****Controller'); return $controller->callAction('dashboard'); } } public function manageUsers(){ if($this->user->isSuper*****()){ $controller = app()->make('Super*****Controller'); return $controller->callAction('manageUsers'); } if($this->user->is*****()){ $controller = app()->make('*****Controller'); return $controller->callAction('manageUsers'); } }