我正在尝试学习Laravel,并且正在检查一些ACL。目前,我正在测试Entrust / Zizaco,并且尝试在注册用户时添加默认角色。
我已将其添加到@NgModule({
imports: [
......
......
providers: [studentProfile, PreviousRouteService ]
})
的create函数中
RegisterController.php
这是全部功能
$user = User::find($create->id);
$role = Role::where('name', '=', 'customers')->firstOrFail();
$user->roles()->attachRole($role->id);
问题是创建了用户但未分配角色。也没有错误。有人可以在这里帮我吗?
答案 0 :(得分:1)
您应该将角色直接附加到用户,所以:
$user->roles()->attachRole($role->id);
应该是
$user->attachRole($role); OR $user->roles()->attach($role->id);
您可以阅读有关此内容的更多信息,并在以下网址找到示例:https://github.com/Zizaco/entrust#concepts
更新
在您的create函数中,您直接返回创建的用户,因此函数在此处停止。进行更改,以便您分配创建的用户,并在角色附加后再返回。
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$role = Role::where('name', '=', 'customers')->firstOrFail();
$user->attachRole($role);
return $user;
}