我已经为backpack crud包安装了权限管理器,它允许我实现权限、角色、用户,但没有示例将代码放在哪里来验证用户是否满足要求。
例如:我在设备控制器的函数setup()中添加了下面的代码,它显示了一个错误,我应该在路由中使用中间件吗??
我最近创建了一个中间件:
class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $role, $permission)
{
// dd($request->user());
// if (!Auth::user()->hasRole($role)) {
// Alert::add('error', 'You do not have necessary authorization to access to the page')->flash(); return redirect('home');
// }
// dd($request->user());
if (Auth::guest()) {
return redirect(url(config('backpack.base.route_prefix').'/login'));
}
dd($request->user()->hasRole($role)); //si pregunta si tiene el rol de administrador
if (!$request->user()->hasRole($role)) {
Alert::info('You do not have necessary authorization to access to the page Role');
// abort(403);
}
if (!$request->user()->can($permission)) // pregunta si tiene el permiso de back_end
{
Alert::error('You do not have necessary authorization to access to the page Permission');
abort(403);
}
return $next($request);
}}
我的路线:
Route::group(['middleware' => ['admin','role:admin,access_backend']], function() {
CRUD::resource('equipos', 'EquiposCrudController');
CRUD::resource('regiones', 'RegionesCrudController');
CRUD::resource('parametros', 'ParametrosCrudController');
CRUD::resource('estaciones', 'EstacionesCrudController');
}如果我有一个用户编辑器,它有一个角色“编辑”和权限"back_end“和”编辑“,这样的中间件设置只有在我的编辑器用户符合管理员角色的情况下才接受它。对吗??我是否应该将admin角色也添加到我的编辑器用户?问题是admin角色拥有对所有内容的权限。
我打算在每个控制器上动态实现下面的代码,而不是要求每个角色。有其他选择吗?
class EquiposCrudController extends CrudController
{
public function setup() {
if($user->hasRole('editor')){
$this->crud->denyAccess(['create','delete']);
}
if($user->hasRole('usuario')){
$this->crud->denyAccess(['create','delete','update']);
}https://stackoverflow.com/questions/44532501
复制相似问题