如何使用 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;
第二条指令,以防您也想分配权限。
我使用 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;
第二条指令,以防您也想分配权限。