Level 44
The $user variable doesn't exist and you're returning out of the function right away so that code is never executed, try this:
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$user->roles()->attach(Role::where('name', 'user')->first());
return $user;