我有一个要授权给多个角色的路由。我创建了两个路由组,一个是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系统。所以请让我看看这是什么类型的问题以及如何找到解决方案。
谢谢。
答案 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']);
});
});