首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel的backpack正在尝试实现权限、角色

laravel的backpack正在尝试实现权限、角色
EN

Stack Overflow用户
提问于 2017-06-14 06:19:11
回答 0查看 2.7K关注 0票数 1

我已经为backpack crud包安装了权限管理器,它允许我实现权限、角色、用户,但没有示例将代码放在哪里来验证用户是否满足要求。

例如:我在设备控制器的函数setup()中添加了下面的代码,它显示了一个错误,我应该在路由中使用中间件吗??

我最近创建了一个中间件:

代码语言:javascript
复制
 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);
}

}

我的路线:

代码语言:javascript
复制
    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角色拥有对所有内容的权限。

我打算在每个控制器上动态实现下面的代码,而不是要求每个角色。有其他选择吗?

代码语言:javascript
复制
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']);
   }
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44532501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档