如何修改我的 Laravel 5.2 注册以在 Laravel 5.3 中为新用户分配角色?

How do I modify my Laravel 5.2 registration to assign new users a role in Laravel 5.3?

我是 Laravel 的新手,一直在尝试构建用户角色身份验证系统。由于 5,3 非常新,因此适合初学者的资源并不多。我正在使用由 php artisan make:auth 创建的身份验证系统,但是我不确定如何将我新创建的用户与我的角色 table.

相关联

最初我一直在 YouTube 上关注 this video series,但 5.2/5.3 之间的身份验证控制器差异很大

我希望有人能帮我弄清楚必须做什么才能将视频中所做的等效操作添加到新控制器中。

Laravel 5.2角色关联

public function postSignUp(Request $request)
{
    $user = new User();
         . . .
    $user->save();
    $user->roles()->attach(Role::where('name', 'User')->first();
}

来自 Laravel 5.3 RegisterController.php

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

感谢阅读。

您可以修改自动生成的控制器:

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

    $user->roles()->attach(Role::where('name', 'User')->first());

    return $user;
}

要通过在创建帐户后立即加入模型的中间 table 中插入一条记录来将角色附加到用户,请在返回新用户之前使用附加方法,如下所示:

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return User
 */
protected function create(array $data)
{
    $user = User::create([
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
    //attach default user role to user
    $user->roles()->attach(Role::where('name', 'User')->first());

    return $user;
}