UNPKG

create-ex-den-kit

Version:

Create exam projects with Ex-Den-Kit

129 lines (109 loc) 3.97 kB
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;