我正在使用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 ,他可以访问控制器的所有功能。如果登录用户是支持人员,那么他只能访问索引方法。
那么如何使用相同的中间件为不同的角色设置权限?