在Entrust和Laravel 5.6上注册时添加默认角色

时间:2018-09-03 11:00:12

标签: php laravel-5

我正在尝试学习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);

问题是创建了用户但未分配角色。也没有错误。有人可以在这里帮我吗?

1 个答案:

答案 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;
}