我正在为API实现基于角色的ACL,我有用户,角色,页面,页面操作(查看,添加,编辑,删除)和页面操作的角色关联表。现在,我如何使用这些表为授权编写Gate或Policy并在中间件中使用它?欢迎任何一个例子。
我查看了授权文档,但没有了解如何定义功能并在基于角色的方案中检查它们。
答案 0 :(得分:1)
请查看此源代码作为示例:Spatie/Laravel-permission
也是中间件检查角色或权限的示例:
<强> can.php 强>
public function handle($request, Closure $next, $permission)
{
if(!$request->user()->can($permission)){
flash()->warning(trans('alert.noAccess'));
return abort(403);
}
return $next($request);
}
<强> role.php 强>
public function handle($request, Closure $next, $role, $permission = null)
{
if (auth()->guest()) {
return redirect(route('auth.login'));
}
if (!$request->user()->hasRole($role)) {
abort(403);
}
return $next($request);
}