使用 Spatie Laravel 权限在 Nova 上分配用户角色

问题描述 投票:0回答:1

我目前在 laravel 5.8 项目中使用 spatie laravel 权限包,并使用 Nova 进行管理。

我希望超级管理员用户能够从 nova 仪表板中为选定的用户分配角色。这就是我尝试使用 nova 操作来做到这一点的方法。我创建了一个

GrantAdminRole
操作并在句柄方法中进行角色分配,如下所示

public function handle(ActionFields $fields, Collection $models)
{
    foreach ($models as $model) {

        // grant user admin role
        $model->assignRole(['admin']);
    }

    return Action::message('User has been assigned Admin role.');
}

然后在我的

app\Nova\User
操作方法中,我使用
GrantAdminRole
操作

public function actions(Request $request)
{
    return [
        (new GrantAdminRole)->canSee(function ($request) {
            return $request->user()->hasRole(['super-admin']);
        })
    ];
}

现在,当我尝试分配角色时,收到一条错误消息

对不起!您无权执行此操作

我该如何解决这个问题?我想我需要一项政策,但不知道该政策应该是什么样子。

php laravel laravel-nova laravel-permission
1个回答
0
投票

我最近使用 https://github.com/serenysoft/nova-permissions 包实现了这个。遵循安装和实施。然后,您可以创建策略并定义控制访问所需的内容。另请仔细查看 nova 授权文档 https://nova.laravel.com/docs/resources/authorization.html#authorizing-attaching-detaching .

© www.soinside.com 2019 - 2024. All rights reserved.