我正在laravel工作,并且正在使用spatie许可包 并且我想在注册时为用户分配不同的角色,我正在使用单选按钮从用户那里获取角色,例如编辑器,作家,博客 如何根据用户输入为用户分配不同的角色
答案 0 :(得分:1)
在Laravel Auth\RegisterController
中,您可以修改create()
函数。
如果您使用的是Spatie软件包,那么这是有效的。
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$user->assignRole('customer'); //assign role to user
return $user;
}
答案 1 :(得分:0)
接受用户输入,并使用assignRole函数作为described in the package readme file
类似
public function someController(Request $request)
{
....
$user->assignRole($request->input('role'));
...
}
假设您有一个表单输入(复选框,单选,文本),名称为role
答案 2 :(得分:0)
我终于找到了一种根据用户选择将不同角色赋予用户的方法
在我的注册创建功能中
$ role = $ data ['userType'];
if ($role == 'User') {
$user->assignRole('User');
}elseif ($role =='Vendor') {
$user->assignRole('Vendor');
}
答案 3 :(得分:0)
您可以尝试以下代码:
protected function create(array $data)
{
$user=User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'user_name' => $data['user_name'],
'role_name' => $data['role_name'],
'phone' => $data['phone'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$role_a = $data['role_name'];
if($role_a == 'student') {
$role = Roles::select('id')->where('admin_name', 'student')->first();
$user->roles()->attach($role);
return $user;
}
elseif ($role_a == 'clg_admin'){
$role=Roles::select('id')->where('admin_name','clg_admin')->first();
$user->roles()->attach($role);
return $user;
}
elseif ($role_a == 'univ_admin'){
$role=Roles::select('id')->where('admin_name','univ_admin')->first();
$user->roles()->attach($role);
return $user;
}
elseif ($role_a == 'gov_admin'){
$role=Roles::select('id')->where('admin_name','gov_admin')->first();
$user->roles()->attach($role);
return $user;
}
elseif ($role_a == 'hod'){
$role=Roles::select('id')->where('admin_name','hod')->first();
$user->roles()->attach($role);
return $user;
}
}