Single Laravel Route for multiple controllers

后端 未结 2 445
温柔的废话
温柔的废话 2020-12-09 05:01

I am creating a project where i have multiple user types, eg. superadmin, admin, managers etc. Once the user is authenticated, the system checks the user type and sends him

2条回答
  •  臣服心动
    2020-12-09 05:54

    The best solution I can think is to create one controller that manages all the pages for the users.

    example in routes.php file:

    Route::get('dashboard', 'PagesController@dashboard');
    Route::get('users', 'PagesController@manageUsers');
    

    your PagesController.php file:

    protected $user;
    
    public function __construct()
    {
        $this->user = Auth::user();
    }
    
    public function dashboard(){
        //you have to define 'isSuperAdmin' and 'isAdmin' functions inside your user model or somewhere else
        if($this->user->isSuperAdmin()){
            $controller = app()->make('SuperAdminController');
            return $controller->callAction('dashboard');    
        }
        if($this->user->isAdmin()){
            $controller = app()->make('AdminController');
            return $controller->callAction('dashboard');    
        }
    }
    public function manageUsers(){
        if($this->user->isSuperAdmin()){
            $controller = app()->make('SuperAdminController');
            return $controller->callAction('manageUsers');  
        }
        if($this->user->isAdmin()){
            $controller = app()->make('AdminController');
            return $controller->callAction('manageUsers');  
        }
    }
    

提交回复
热议问题