如何使用 laravel 8 +jetstream + spatie 将角色分配给注册用户

How can assign role to registered user using laravel 8 +jetstream + spatie

我使用 spatie 创建了角色。我想让 jetstream 注册表格将角色 'gust' 分配给通过 jetstream 注册表格注册的任何用户。

我通过以下步骤弄明白了:app>actions>Fortify>CreateNewUser.php>

public function create(array $input)
    {
        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => $this->passwordRules(),
        ])->validate();

        return DB::transaction(function () use ($input) {
            return tap(User::create([
                'name' => $input['name'],
                'email' => $input['email'],
                'password' => Hash::make($input['password']),
            ]), function (User $user) {
                $this->createRole($user);
            });
        });
    }

然后我创建了一个受保护的函数 createRole,如下所示:

protected function createRole(User $user)
    {
        $user->assignRole('geust');
    }

自动为新注册的用户分配角色。 不要忘记将以下指令添加到文件顶部:

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

第二条指令,以防您也想分配权限。