user.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const express = require('express');
  2. const { sequelize } = require('../models');
  3. const { QueryTypes } = require('sequelize');
  4. const md5 = require('md5');
  5. const jwt = require('jsonwebtoken');
  6. const JWT_SECRET = 'super_secret_key_123';
  7. const router = express.Router();
  8. router.post('/register', async (req, res) => {
  9. try {
  10. const { login, password, firstName, lastName, phone, email } = req.body;
  11. const existingUser = await sequelize.query(
  12. 'SELECT * FROM clients WHERE login = :login',
  13. { replacements: { login: login }, type: QueryTypes.SELECT, plain: true }
  14. );
  15. if (existingUser) return res.status(400).send('Логин уже занят');
  16. const passwordMD5 = md5(password);
  17. await sequelize.query(`
  18. INSERT INTO clients (login, password, first_name, last_name, phone_number, email)
  19. VALUES (:login, :password, :firstName, :lastName, :phone, :email)
  20. `, {
  21. replacements: {
  22. login: login,
  23. password: passwordMD5,
  24. firstName: firstName || 'Гость',
  25. lastName: lastName || null,
  26. phone: phone || null,
  27. email: email || null
  28. },
  29. type: QueryTypes.INSERT
  30. });
  31. res.status(201).send('Регистрация успешна');
  32. } catch (error) {
  33. console.error('ОШИБКА БАЗЫ ДАННЫХ:', error.message);
  34. if (error.message.includes('Unique constraint')) {
  35. return res.status(400).send('Email или Телефон уже используются другим аккаунтом');
  36. }
  37. res.status(500).send('Ошибка при сохранении: ' + error.message);
  38. }
  39. });
  40. // Роут для ЛОГИНА (оставляем без изменений)
  41. router.post('/', async (req, res) => {
  42. try {
  43. const user = await sequelize.query(`
  44. SELECT * FROM clients WHERE login=:login
  45. `, {
  46. plain: true,
  47. type: QueryTypes.SELECT,
  48. replacements: { login: req.body.login }
  49. });
  50. if (user) {
  51. const passwordMD5 = md5(req.body.password);
  52. if (user.password == passwordMD5) {
  53. const jwtToken = jwt.sign({ id: user.client_id, firstName: user.first_name }, JWT_SECRET);
  54. res.json(jwtToken);
  55. } else {
  56. res.status(401).send('Неверный пароль');
  57. }
  58. } else {
  59. res.status(404).send('Пользователь не найден');
  60. }
  61. } catch (error) {
  62. res.status(500).send(error.message);
  63. }
  64. });
  65. module.exports = router;