我的项目使用 laravel fortify,惯性与 vue。我必须添加基于角色的权限(就像 spatie 权限包)。我还是个刚强和惯性的初学者。但我有 spatie 包的经验。我不知道如何添加角色和权限来强化。目前我正计划创建像 spatie 包有(角色、权限、角色_has_permissions 等)的表结构。是否有每个构建包或更好的方法来实现角色和权限?并在 vue 文件中使用“@can”?谢谢你。
编辑
大家好,这是我目前正在做的(我现在正在使用这个)。它正在工作,但仍需要一些改进,(任何更好的解决方案我真的很感激)
1)像往常一样安装和配置 spatie/laravel-permission
2)使用播种器向表添加预定义的权限和角色
在用户模型中创建函数以获取权限数组列表
// user model function public function getPermissionArray() { return $this->getAllPermissions()->mapWithKeys(function($pr){ return [$pr['name'] => true]; }); }
并将该功能添加到惯性中间件
//App\Http\Middleware\HandleInertiaRequests
public function share(Request $request)
{
return array_merge(parent::share($request), [
'auth'=>['user' => $request->user() ? $request->user()->only('id', 'name', 'email') : null,
'can' =>$request->user() ? $request->user()->getPermissionArray() : []
],
]);
}
现在$page.props.auth.can
可以全局访问
- 在 vue 文件中添加权限检查
<div class="row">
<div class="col-sm-12 col-md-6" v-if="$page.props.auth.can['user_create']">
<inertia-link
class="btn btn-primary"
:href="$route('admin.user.create')"
>Create New
</inertia-link>
</div>
</div>