const express = require('express'); const { sequelize } = require('../models'); const { QueryTypes } = require('sequelize'); const md5 = require('md5'); const jwt = require('jsonwebtoken'); const JWT_SECRET = 'super_secret_key_123'; const router = express.Router(); router.post('/register', async (req, res) => { try { const { login, password, firstName, lastName, phone, email } = req.body; const existingUser = await sequelize.query( 'SELECT * FROM clients WHERE login = :login', { replacements: { login: login }, type: QueryTypes.SELECT, plain: true } ); if (existingUser) return res.status(400).send('Логин уже занят'); const passwordMD5 = md5(password); await sequelize.query(` INSERT INTO clients (login, password, first_name, last_name, phone_number, email) VALUES (:login, :password, :firstName, :lastName, :phone, :email) `, { replacements: { login: login, password: passwordMD5, firstName: firstName || 'Гость', lastName: lastName || null, phone: phone || null, email: email || null }, type: QueryTypes.INSERT }); res.status(201).send('Регистрация успешна'); } catch (error) { console.error('ОШИБКА БАЗЫ ДАННЫХ:', error.message); if (error.message.includes('Unique constraint')) { return res.status(400).send('Email или Телефон уже используются другим аккаунтом'); } res.status(500).send('Ошибка при сохранении: ' + error.message); } }); // Роут для ЛОГИНА (оставляем без изменений) router.post('/', async (req, res) => { try { const user = await sequelize.query(` SELECT * FROM clients WHERE login=:login `, { plain: true, type: QueryTypes.SELECT, replacements: { login: req.body.login } }); if (user) { const passwordMD5 = md5(req.body.password); if (user.password == passwordMD5) { const jwtToken = jwt.sign({ id: user.client_id, firstName: user.first_name }, JWT_SECRET); res.json(jwtToken); } else { res.status(401).send('Неверный пароль'); } } else { res.status(404).send('Пользователь не найден'); } } catch (error) { res.status(500).send(error.message); } }); module.exports = router;