2017-07-26 82 views
0

我开始与spatie/laravel权限。我可以使用我的刀片权限。工作正常。我想要的是控制它在更高的水平。所以我不必在每一个create.blade.php使用它Laravel最好的地方来控制你的角色和权限

@can('add users') or @hasrole('administrator') 

我在哪里和如何实现这一目标?

+0

Laravel 5.5将有刃::如果声明,这样可以在指令https://laracasts.com/series进行自定义/ whats-new-in-laravel-5-5/episodes/10 –

+0

您是否考虑过路线和中间件作为选项? 另外还有一个关于认证和授权的laracasts课程 – Maky

+0

是@Maky,现在我有$ request-> user() - > can(\ Request :: route() - > getName())在一个中间件中。所以在我的权限表中,我有users.create等特定用户。这是“好”的方式吗? – Bas

回答

0

解决方案是一个中间件:

public function handle($request, Closure $next, $role, $permission=null) 
{ 
    if(Auth::user()){ 
     if($request->user()->can(\Request::route()->getName())===false){ 
      return response(view('noaccess')); 
     } 
    } 

    return $next($request); 
} 

user has permission table

persmissions table