同一角色在多个角色和路由组中?

时间:2018-11-12 13:01:22

标签: laravel

我有一个要授权给多个角色的路由。我创建了两个路由组,一个是admin,另一个是雇员,并且有一个路由abc.com/abc,我想在两个角色上都可以访问。管理员路由为:

Route::group(['middleware'=>['auth','role:admin|hr-manager|manager ']],function(){
    Route::get('employee',['as'=>'employee','uses'=>'EmployeeController@employeeList']); 
    Route::get('leave-type',['as'=>'leave.type','uses'=>'LeaveController@getLeaveType']);
}

员工路线为:

Route::group(['middleware' => ['auth','role:employee']], function(){
    Route::get('leave-type',['as'=>'leave.type','uses'=>'LeaveController@getLeaveType']);
}

现在,当我以管理员身份登录时,由于管理员用户没有员工角色,所以我无法访问请假类型的路由,但是当我将管理员用户分配给员工角色时,它将可以访问,并且管理员用户不能成为员工,因此我如何在两个角色上都可以访问此路由。

将laravel 5.4和zizaco / entrust用于ACL系统。所以请让我看看这是什么类型的问题以及如何找到解决方案。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您需要更多可用于基组的路由,然后需要其他路由的特定子集,我建议将路由文件重新组织为以下内容:

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

    //Routes available to all users
    Route::get('leave-type',['as'=>'leave.type', 'uses'=>'LeaveController@getLeaveType']);

    //Routes available to employees
    Route::middleware(['role:employee'])->group(function () {

    });

    //Routes available to Admin, HR Manager and Manager
    Route::middleware(['role:admin|hr-manager|manager'])->group(function () {
        Route::get('employee', ['as'=>'employee', 'uses'=>'EmployeeController@employeeList']); 
    });
});