Вы должны реализовать функцию, аналогичную тому, как работает сброс пароля.
Вы можете оставить свой метод создания как есть.Внутри вашего RegisterController также есть функция register ().
1. В этой функции вы должны переопределить часть, где пользователь вошел в систему, и вместо этого вы должны перенаправить его на страницу ссообщение о том, что электронное письмо было отправлено, и он должен проверить его.
Теперь, как я вижу, вы отправляете код с электронным письмом.
2. В сообщении электронной почты также следует указать ссылку, которая перенаправляет пользователя на страницу отправки кода.
3. Если у вас нет такой страницы, вы должны создать ее.Blade-файл, функция для его просмотра и маршрут к файлу web.php для доступа к нему.
4. Внутри этой страницы у вас будет <form>
с одним <input>
поле, например, 'code', где его действие будет указывать на функцию, которую вы создадите, например validateCode () внутри вашего RegisterController.
Тогда это задание функций будет проверять таблицу Users на пользователя с таким же кодом.с помощью предоставленного в запросе, если такой пользователь существует, он обновит поле 'email_verify' до 1 входа в систему пользователя и перенаправит его на панель, если нет, он перенаправит обратно в представление отправки кода:
public function validateCode(Request $request)
{
$user = User::whereVerificationCode($request->get('code'))->first();
if($user){
$user->verify_email = true;
$user->update();
Auth::login($user);
return redirect()->route('home');
}else{
return redirect()->back();
}
}
Также было бы хорошо, если вы измените код, который вы генерируете, на 9 или 10 цифру или даже лучше на хеш-строку по соображениям безопасности.