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

时间:2016-09-13 18:08:53

标签: laravel laravel-5.3

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

最初我一直关注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']),
        ]);
    }

感谢阅读。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

/**
 * 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;
}