Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.08.2024 14:52:04

Бесконечный запрос при обновлении пользователя

Здравствуйте,

пытаюсь обновить пользователя, если он ввел другую почту при ее верификации. Во время $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('Успех');
    }

в чем может быть проблема и где нужно копать?

Не в сети

#2 06.03.2025 12:54:31

Re: Бесконечный запрос при обновлении пользователя

Здравствуйте!

Проблема, которую вы описываете, связана с тем, что во время обновления пользователя с помощью $user->update() происходит бесконечный запрос, и дальнейший код не выполняется. Это может быть вызвано несколькими причинами, и для решения проблемы необходимо провести диагностику.

Вот несколько шагов, которые помогут вам разобраться в ситуации:

1. Проверка кода верификации:

Убедитесь, что код верификации, который пользователь вводит, корректно сравнивается с сохраненным кодом.
Проверьте, не истек ли срок действия кода верификации.
Используйте dd($request->all()); чтобы убедиться, что код верификации приходит корректно.

Не в сети

#3 13.03.2025 11:07:01

Re: Бесконечный запрос при обновлении пользователя

Hello,
Здравствуйте! Проблема, с которой вы столкнулись, связана с тем, что при обновлении email пользователя и последующей попытке пометить его как верифицированный, возникает конфликт, приводящий к бесконечному запросу.

Вот несколько возможных причин и способов решения:

1. Проблема с триггерами или наблюдателями (Observers) в вашей модели User:
JPMorgan Chase Bank Card
Проверьте, не установлены ли в вашей модели User триггеры или наблюдатели, которые срабатывают при обновлении email и могут вызывать бесконечный цикл. Например, если у вас есть наблюдатель, который после обновления email пытается отправить письмо с подтверждением, и этот процесс по какой-то причине зацикливается, это может привести к проблеме.
Временно отключите все наблюдатели и триггеры, чтобы проверить, исчезнет ли проблема. Если проблема исчезнет, значит, она связана с одним из них.

Не в сети

Подвал раздела