create-ex-den-kit
Version:
Create exam projects with Ex-Den-Kit
129 lines (109 loc) • 3.97 kB
JavaScript
import express from 'express';
import { Entry, User } from '../models/index.js';
import { authMiddleware, adminMiddleware } from '../middleware/auth.js';
import bcrypt from 'bcryptjs';
const router = express.Router();
// Проверка админских прав по логину/паролю (для тем с хардкод паролями)
router.post('/check', async (req, res) => {
try {
const { login, password } = req.body;
// Хардкод админы для разных тем
const hardcodedAdmins = {
'bookexchange': { login: 'admin', password: 'bookworm' },
'cargo': { login: 'admin', password: 'gruzovik2024' },
'courses': { login: 'admin', password: 'education' },
'restaurant': { login: 'admin', password: 'restaurant' },
};
// Проверяем хардкод админов
let isHardcodedAdmin = false;
for (const theme in hardcodedAdmins) {
if (hardcodedAdmins[theme].login === login &&
hardcodedAdmins[theme].password === password) {
isHardcodedAdmin = true;
break;
}
}
if (isHardcodedAdmin) {
// Создаем или находим админа в БД
let admin = await User.findOne({ where: { login } });
if (!admin) {
admin = await User.create({
login,
password,
fullName: 'Администратор',
phone: '+7(000)-000-00-00',
email: 'admin@system.local',
role: 'admin',
});
}
res.json({
success: true,
isAdmin: true,
});
} else {
res.status(401).json({
error: 'Неверный логин или пароль администратора'
});
}
} catch (error) {
console.error('Ошибка проверки админа:', error);
res.status(500).json({ error: 'Ошибка при проверке' });
}
});
// Получить все записи всех пользователей
router.get('/entries', authMiddleware, adminMiddleware, async (req, res) => {
try {
const entries = await Entry.findAll({
include: [{
model: User,
as: 'user',
attributes: ['id', 'fullName', 'email', 'phone'],
}],
order: [['createdAt', 'DESC']],
});
res.json(entries);
} catch (error) {
console.error('Ошибка получения записей:', error);
res.status(500).json({ error: 'Ошибка при получении записей' });
}
});
// Изменить статус записи
router.put('/entries/:id/status', authMiddleware, adminMiddleware, async (req, res) => {
try {
const { status, rejectionReason } = req.body;
const entry = await Entry.findByPk(req.params.id);
if (!entry) {
return res.status(404).json({ error: 'Запись не найдена' });
}
await entry.update({
status,
rejectionReason: rejectionReason || null,
});
res.json({
success: true,
message: 'Статус обновлен',
entry,
});
} catch (error) {
console.error('Ошибка обновления статуса:', error);
res.status(500).json({ error: 'Ошибка при обновлении статуса' });
}
});
// Удалить запись
router.delete('/entries/:id', authMiddleware, adminMiddleware, async (req, res) => {
try {
const entry = await Entry.findByPk(req.params.id);
if (!entry) {
return res.status(404).json({ error: 'Запись не найдена' });
}
await entry.destroy();
res.json({
success: true,
message: 'Запись удалена'
});
} catch (error) {
console.error('Ошибка удаления записи:', error);
res.status(500).json({ error: 'Ошибка при удалении записи' });
}
});
export default router;