Назад к вопросам
Junior
384
questionbank

Какой запрос необходимо выполнить для подтверждения регистрации пользователя?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Обычно это PUT или POST запрос по адресу, содержащему токен подтверждения.

Пример:

// На стороне клиента
fetch('/api/auth/confirm-email', {
  method: 'PUT', // или POST
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ token: 'полученный_токен_из_ссылки' })
})
.then(response => {
  if (!response.ok) {
    throw new Error('Ошибка подтверждения');
  }
  return response.json();
})
.then(data => {
  console.log('Пользователь подтвержден:', data);
})
.catch(error => {
  console.error('Ошибка:', error);
});
// На стороне сервера (Node.js с Express)
app.put('/api/auth/confirm-email', async (req, res) => {
  const { token } = req.body;

  if (!token) {
    return res.status(400).json({ message: 'Токен не предоставлен' });
  }

  try {
    // Найти пользователя по токену
    const user = await User.findOne({ confirmationToken: token });

    if (!user) {
      return res.status(404).json({ message: 'Неверный или истекший токен' });
    }

    // Установить флаг подтверждения и очистить токен
    user.isConfirmed = true;
    user.confirmationToken = null; // Очистить токен после использования
    user.confirmationTokenExpires = null; // Очистить срок действия токена
    await user.save();

    res.status(200).json({ message: 'Еmail успешно подтвержден' });

  } catch (error) {
    console.error('Ошибка подтверждения email:', error);
    res.status(500).json({ message: 'Ошибка сервера при подтверждении email' });
  }
});