UNPKG

create-ex-den-kit

Version:

Create exam projects with Ex-Den-Kit

113 lines (98 loc) 2.98 kB
import express from 'express'; import jwt from 'jsonwebtoken'; import { User } from '../models/index.js'; const router = express.Router(); // Регистрация router.post('/register', async (req, res) => { try { const { login, password, fullName, phone, email } = req.body; // Валидация if (!login || !password || !fullName || !phone || !email) { return res.status(400).json({ error: 'Все поля обязательны для заполнения' }); } if (password.length < 6) { return res.status(400).json({ error: 'Пароль должен содержать минимум 6 символов' }); } // Проверка существующего пользователя const existingUser = await User.findOne({ where: { login } }); if (existingUser) { return res.status(400).json({ error: 'Пользователь с таким логином уже существует' }); } // Создание пользователя const user = await User.create({ login, password, fullName, phone, email, }); res.json({ success: true, message: 'Регистрация успешна', userId: user.id }); } catch (error) { console.error('Ошибка регистрации:', error); res.status(500).json({ error: error.message || 'Ошибка при регистрации' }); } }); // Авторизация router.post('/login', async (req, res) => { try { const { login, password } = req.body; if (!login || !password) { return res.status(400).json({ error: 'Введите логин и пароль' }); } // Поиск пользователя const user = await User.findOne({ where: { login } }); if (!user) { return res.status(401).json({ error: 'Неверный логин или пароль' }); } // Проверка пароля const isValidPassword = await user.validatePassword(password); if (!isValidPassword) { return res.status(401).json({ error: 'Неверный логин или пароль' }); } // Создание JWT токена const token = jwt.sign( { id: user.id, login: user.login, role: user.role }, process.env.JWT_SECRET || 'secret-key', { expiresIn: '24h' } ); res.json({ success: true, token, user: { id: user.id, login: user.login, fullName: user.fullName, email: user.email, role: user.role, }, }); } catch (error) { console.error('Ошибка авторизации:', error); res.status(500).json({ error: 'Ошибка при авторизации' }); } }); export default router;