При использовании базовой авторизации/регистрации Laravel, которая генерируется artisan'ом возникла проблема: после успешной регистрации пользователя автоматически авторизует на сайте. По моей задумке - пользователь получает данные для входа на почту и пароль при регистрации не указывает. Соответственно, авторизация не к месту.
По данной проблеме искал решения, самое популярное из них - переопределить в RegisterController.php метод register, взяв его из исходного файла:
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
и удалить там строчку:
$this->guard()->login($user);
Звучит логично, и до этого я дошел и сам. Но почему-то решение не помогает и при регистрации пользователя все равно авторизует. Остальные найденные решения также потерпели фиаско.
Сейчас код контроллера полностью выглядит так (комментарии потер, а то жирно получается):
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Mail\RegistrationSuccess;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = '/cp';
public function showRegistrationForm()
{
return view('auth.register', ['no_padding' => true]);
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
public function __construct()
{
$this->middleware('guest');
}
protected function registered(Request $request, $user)
{
return view('info', [
'breadcrumbs' => [
[
'name' => 'Регистрация',
'href' => route('register')
],
[
'name' => 'Завершение',
'href' => '#',
'current' => true
]
],
'page' => [
'title' => 'Завершение регистрации',
'content' => 'Регистрация успешно завершена! На адрес '.$request->email.' отправлена информация с данными для входа. Если не видите письма - проверьте его в папке "Спам". Для повторной отправки письма запросите восстановление пароля на странице авторизации'
]
]);
}
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',
]);
}
protected function create(array $data)
{
$password = str_random(16);
$user_data = [
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'generate_pass' => $password,
'password' => bcrypt($password),
];
$create_user = User::create($user_data);
if($create_user){
Mail::to($create_user)->send(new RegistrationSuccess($user_data));
unset($user_data);
}
else{
dd('error');
}
}
}
Может кто сталкивался с подобным? Заранее благодарочка.