Я успешно сменил пароль, но у меня возникли проблемы со сменой адреса электронной почты, что, я думаю, было бы проще, но почему-то не мог придумать, как это сделать.
Старый адрес электронной почты:
Новый адрес электронной почты:
Подтвердите новый адрес электронной почты:
Это форма, которую я хочу создать, но не могу решить функцию контроллеров.
Вот как я пытался его решить
public function changeemailPost(Request $request)
{
if (!(Hash::check($request->get('email'), Auth::user()->email))) {
return redirect()->back()->with("error","Your current e-mail does not matches with the e-mail you provided. Please try again.");
}
if(strcmp($request->get('email'), $request->get('new-email')) == 0){
return redirect()->back()->with("error","New e-mail cannot be same as your current e-mail. Please choose a different e-mail.");
}
$validate = $request->validate([
'email' => 'required',
'new-email' => 'required|string|min:6|confirmed',
]);
$user = Auth::user();
$user->email = $request['new-email'];
$user->save();
Auth::logout();
return view('auth.login');
}
Это html
<form method="POST" action="{{ route('change-emailPost') }}">
@csrf
<label>Enter your old e-mail:</label>
<fieldset class="youplay-input">
<input id="current-email" type="email" class="form-control" placeholder="Current E-Mail" name="email" required>
</fieldset>
<label>Enter your new e-mail:</label>
<fieldset class="youplay-input">
<input id="new-email" type="email" placeholder="New E-Mail" class="form-control" name="new-email" required>
</fieldset>
<fieldset class="youplay-input">
<input id="new-email-confirm" type="email" class="form-control" placeholder="Confirm New E-Mail" name="new-email-confirmation" required>
</fieldset>
<button type="submit" class="btn btn-default db">
Change E-Mail
</button>
</form>
Но я получаю только эта ошибка
Ваш текущий адрес электронной почты не совпадает с указанным вами. Повторите попытку.
Проблема была решена благодаря ответу ниже, но вы должны изменить одну вещь: Ha sh проверяет ошибки в электронной почте вместо:
if (!(Hash::check($request->get('email'), Auth::user()->email))) {
return redirect()->back()->with("error","Your current e-mail does not matches with the e-mail you provided. Please try again.");
}
if(strcmp($request->get('email'), $request->get('new-email')) == 0){
return redirect()->back()->with("error","New e-mail cannot be same as your current e-mail. Please choose a different e-mail.");
}
Используйте это:
if(Auth::user()->email != $request['email']){
return redirect()->back()->with("error","Your email doesnt not match with what you provided");
}
if(Auth::user()->email === $request['new-email']){
return redirect()->back()->with("error", "Your new email cannot be the same as the old email");
}