laravel中控制器功能的用户角色明智权限

时间:2017-04-05 06:47:48

标签: laravel

我正在使用laravel5.4。我需要为每个方法创建角色明智的权限。

在这里,我创建了一个中间件(角色),如下所示:

CheckRole.php

public function handle($request, Closure $next)
{
    $role = array_slice(func_get_args(), 2);
    if ( ! User::find(auth()->id())->hasAnyRole($role))
    {    
        return response("Insufficient permission",401);
        session()->flash('message',"You have no permission to access");
        return redirect('/');
    }
    return $next($request);
}

我有一个控制器 CompanyController

CoompanyController.php

public function __construct()
{
    $this->middleware(function (Request $request, $next) 
    {
        $this->user = \Auth::User();
        //print_r($this->user);exit;
        if($this->user['userrole_id'] == 1)
        {
            $this->middleware('roles:superadmin');      
        }
        else if ($this->user['userrole_id'] == 3) 
        {
            $this->middleware('roles:supportperson',['only' => ['index']]);
        }
        return $next($request);
    });
}

这里,如果登录用户 superadmin ,他可以访问控制器的所有功能。如果登录用户是支持人员,那么他只能访问索引方法。

那么如何使用相同的中间件为不同的角色设置权限?

1 个答案:

答案 0 :(得分:0)

使用https://github.com/Zizaco/entrust

Entrust是一种简洁而灵活的方式,可以为Laravel 5添加基于角色的权限。