Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте,
пытаюсь обновить пользователя, если он ввел другую почту при ее верификации. Во время $user->update() запрос становится бесконечным без ответа, а дальнейший код не выполняется. Почта обновляется, но не верифицируется.
public function verify(Request $request)
{
$request->validate([
'code' => ['required', 'string', 'size:6'],
'email' => ['required', 'email', Rule::unique('users', 'email')->ignore(user()->id)]
]);
$user = user();
$newEmail = $request->email;
$verification = EmailVerification::where('email', $newEmail)
->where('code', $request->code)
->where('created_at', '>=', Carbon::now()->subMinutes(10))
->first();
if (!$verification) {
throw ValidationException::withMessages([
'code' => ['Неверный код или код просрочен']
]);
}
if ($newEmail !== $user->email) {
$user->update(['email' => $newEmail]);
}
$user->markEmailAsVerified();
$verification->delete();
return new JsonResponse('Успех');
}
в чем может быть проблема и где нужно копать?
Не в сети
Здравствуйте!
Проблема, которую вы описываете, связана с тем, что во время обновления пользователя с помощью $user->update() происходит бесконечный запрос, и дальнейший код не выполняется. Это может быть вызвано несколькими причинами, и для решения проблемы необходимо провести диагностику.
Вот несколько шагов, которые помогут вам разобраться в ситуации:
1. Проверка кода верификации:
Убедитесь, что код верификации, который пользователь вводит, корректно сравнивается с сохраненным кодом.
Проверьте, не истек ли срок действия кода верификации.
Используйте dd($request->all()); чтобы убедиться, что код верификации приходит корректно.
Не в сети
Hello,
Здравствуйте! Проблема, с которой вы столкнулись, связана с тем, что при обновлении email пользователя и последующей попытке пометить его как верифицированный, возникает конфликт, приводящий к бесконечному запросу.
Вот несколько возможных причин и способов решения:
1. Проблема с триггерами или наблюдателями (Observers) в вашей модели User:
JPMorgan Chase Bank Card
Проверьте, не установлены ли в вашей модели User триггеры или наблюдатели, которые срабатывают при обновлении email и могут вызывать бесконечный цикл. Например, если у вас есть наблюдатель, который после обновления email пытается отправить письмо с подтверждением, и этот процесс по какой-то причине зацикливается, это может привести к проблеме.
Временно отключите все наблюдатели и триггеры, чтобы проверить, исчезнет ли проблема. Если проблема исчезнет, значит, она связана с одним из них.
Не в сети