小编Vid*_*nga的帖子

如何为 Laravel Fortify + Inertia + vue 添加角色和权限?

我的项目使用 laravel fortify,惯性与 vue。我必须添加基于角色的权限(就像 spatie 权限包一样)。我对于强化和惯性还是一个初学者。但我有 spatie 包的经验。我对如何添加角色和权限进行强化感到困惑。目前我计划创建像 spatie 包 has 这样的表结构(角色、权限、roles_has_permissions 等)。是否有每个构建包或更好的方法来实现角色和权限?并在 vue 文件中使用“@can”?谢谢。

编辑

大家好,这是我目前所做的(我现在正在使用这个)。它正在工作,但仍需要一些改进,(任何更好的解决方案我真的很感激)

1)照常安装和配置 spatie/laravel-permission

2)使用seeder向表添加预定义的权限和角色

  1. 在用户模型中创建函数来获取权限数组列表

    // user model function
    public function getPermissionArray()
     {
         return $this->getAllPermissions()->mapWithKeys(function($pr){
             return [$pr['name'] => true];
         });
    
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 并将该功能添加到惯性中间件中

// user model function
public function getPermissionArray()
 {
     return $this->getAllPermissions()->mapWithKeys(function($pr){
         return [$pr['name'] => true];
     });

 }
Run Code Online (Sandbox Code Playgroud)

现在$page.props.auth.can可以全球访问

  1. 在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>
Run Code Online (Sandbox Code Playgroud)

inertiajs laravel laravel-fortify

6
推荐指数
2
解决办法
9465
查看次数

标签 统计

inertiajs ×1

laravel ×1

laravel-fortify ×1