#laravel
Вопрос:
Мой register
метод в RegisterController
:
public function register(Request $request)
{
$this->validator($request->all())->validate();
$user = $this->create($request->all());
Auth::login($user);
event(new Registered($user));
return redirect()->route('account.index');
}
Если я пройду через этот поток, пользователь аутентифицируется, и событие запускается, но пользователь не перенаправляется… Теперь о запутанной части: если я перемещу строку перенаправления выше строки события, это сработает (но, очевидно, событие не срабатывает).:
Auth::login($user);
return redirect()->route('account.index'); // User is correctly redirected here
event(new Registered($user));
Что здесь происходит?
Полный регистрационный контроллер:
<?php
namespace AppHttpControllersAuth;
use AppHttpControllersController;
use AppModelsUser;
use AppProvidersRouteServiceProvider;
use IlluminateHttpRequest;
use IlluminateAuthEventsRegistered;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesValidator;
class RegisterController extends Controller
{
public function __construct()
{
$this->middleware('guest');
}
public function showRegistrationForm()
{
return view('auth.register');
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
$user = $this->create($request->all());
Auth::login($user);
event(new Registered($user));
return redirect()->route('account.index');
}
protected function validator(array $data)
{
return Validator::make($data, [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
protected function create(array $data, array $ua)
{
$user = User::create([
'email' => $data['email'],
'password' => Hash::make($data['password']),
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
]);
return $user;
}
}
Комментарии:
1. вы используете очередь в событии?
Ответ №1:
Попробуйте аутентифицировать пользователя с помощью идентификатора :
public function register(Request $request)
{
$this->validator($request->all())->validate();
$user = $this->create($request->all());
Auth::loginUsingId($user->id);
event(new Registered($user));
return redirect()->route('account.index');
}