create-ex-den-kit
Version:
Create exam projects with Ex-Den-Kit
113 lines (98 loc) • 2.98 kB
JavaScript
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;