ntp&modercontent_front
This commit is contained in:
@@ -1658,3 +1658,96 @@
|
||||
[2026-08-10T07:18:02.945Z] [INFO] [LOGIN] Ответ отправлен
|
||||
[2026-08-10T07:22:25.057Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T07:22:25.060Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T17:21:24.568Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T17:21:24.572Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T17:38:05.413Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T17:38:05.416Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T17:38:24.712Z] [INFO] [LOGIN] Попытка входа: grivova
|
||||
[2026-08-10T17:38:24.713Z] [INFO] [LOGIN] Проверка подключения к базе...
|
||||
[2026-08-10T17:38:24.749Z] [INFO] [LOGIN] Результат поиска пользователя: не найден
|
||||
[2026-08-10T17:38:24.750Z] [WARN] [LOGIN] Пользователь не найден: grivova
|
||||
[2026-08-10T17:38:29.893Z] [INFO] [LOGIN] Попытка входа: vova
|
||||
[2026-08-10T17:38:29.894Z] [INFO] [LOGIN] Проверка подключения к базе...
|
||||
[2026-08-10T17:38:29.897Z] [INFO] [LOGIN] Результат поиска пользователя: найден
|
||||
[2026-08-10T17:38:29.898Z] [INFO] [LOGIN] Сравнение пароля через bcrypt...
|
||||
[2026-08-10T17:38:30.033Z] [INFO] [LOGIN] Результат сравнения пароля: true
|
||||
[2026-08-10T17:38:30.034Z] [INFO] [LOGIN] Сессия установлена: {"isModerator":true,"userId":4,"username":"vova"}
|
||||
[2026-08-10T17:38:30.038Z] [INFO] [LOGIN] Ответ отправлен
|
||||
[2026-08-10T17:42:06.235Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T17:42:06.238Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T17:43:18.054Z] [INFO] [DB CHECK] Проверка подключения к MySQL: localhost:3306/rasch_content
|
||||
[2026-08-10T17:43:18.068Z] [INFO] [DB CHECK] ✅ Успешное подключение к MySQL
|
||||
[2026-08-10T17:43:42.744Z] [INFO] [LOGIN] Попытка входа: vova
|
||||
[2026-08-10T17:43:42.745Z] [INFO] [LOGIN] Проверка подключения к базе...
|
||||
[2026-08-10T17:43:42.751Z] [INFO] [LOGIN] Результат поиска пользователя: найден
|
||||
[2026-08-10T17:43:42.752Z] [INFO] [LOGIN] Сравнение пароля через bcrypt...
|
||||
[2026-08-10T17:43:42.833Z] [INFO] [LOGIN] Результат сравнения пароля: true
|
||||
[2026-08-10T17:43:42.834Z] [INFO] [LOGIN] Сессия установлена: {"isModerator":true,"userId":4,"username":"vova"}
|
||||
[2026-08-10T17:43:42.835Z] [INFO] [LOGIN] Ответ отправлен
|
||||
[2026-08-10T17:44:32.453Z] [INFO] [DB CHECK] Проверка подключения к MySQL: localhost:3306/rasch_content
|
||||
[2026-08-10T17:44:32.465Z] [INFO] [DB CHECK] ✅ Успешное подключение к MySQL
|
||||
[2026-08-10T17:44:38.654Z] [INFO] [LOGIN] Попытка входа: vova
|
||||
[2026-08-10T17:44:38.655Z] [INFO] [LOGIN] Проверка подключения к базе...
|
||||
[2026-08-10T17:44:38.657Z] [INFO] [LOGIN] Результат поиска пользователя: найден
|
||||
[2026-08-10T17:44:38.658Z] [INFO] [LOGIN] Сравнение пароля через bcrypt...
|
||||
[2026-08-10T17:44:38.794Z] [INFO] [LOGIN] Результат сравнения пароля: true
|
||||
[2026-08-10T17:44:38.795Z] [INFO] [LOGIN] Сессия установлена: {"isModerator":true,"userId":4,"username":"vova"}
|
||||
[2026-08-10T17:44:38.798Z] [INFO] [LOGIN] Ответ отправлен
|
||||
[2026-08-10T17:49:04.372Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T17:49:04.376Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T18:07:19.446Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T18:07:19.450Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T18:07:21.917Z] [INFO] [DB CHECK] Проверка подключения к MySQL: localhost:3306/rasch_content
|
||||
[2026-08-10T18:07:21.973Z] [INFO] [DB CHECK] ✅ Успешное подключение к MySQL
|
||||
[2026-08-10T18:07:22.009Z] [ERROR] [DB CHECK] ❌ Ошибка связи с бэкендом: connect ECONNREFUSED 127.0.0.1:3001; connect ECONNREFUSED ::1:3001
|
||||
[2026-08-10T18:09:04.717Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T18:09:04.720Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T18:11:04.542Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T18:11:04.545Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T19:48:50.904Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T19:48:50.908Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T19:49:05.177Z] [INFO] [DB CHECK] Проверка подключения к MySQL: localhost:3306/rasch_content
|
||||
[2026-08-10T19:49:05.244Z] [INFO] [DB CHECK] ✅ Успешное подключение к MySQL
|
||||
[2026-08-10T19:49:05.309Z] [ERROR] [DB CHECK] ❌ Ошибка связи с бэкендом: connect ECONNREFUSED 127.0.0.1:3001; connect ECONNREFUSED ::1:3001
|
||||
[2026-08-10T19:52:24.799Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T19:52:24.804Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T19:54:26.429Z] [INFO] [LOGIN] Попытка входа: vova
|
||||
[2026-08-10T19:54:26.430Z] [INFO] [LOGIN] Проверка подключения к базе...
|
||||
[2026-08-10T19:54:26.437Z] [INFO] [LOGIN] Результат поиска пользователя: найден
|
||||
[2026-08-10T19:54:26.439Z] [INFO] [LOGIN] Сравнение пароля через bcrypt...
|
||||
[2026-08-10T19:54:26.774Z] [INFO] [LOGIN] Результат сравнения пароля: true
|
||||
[2026-08-10T19:54:26.776Z] [INFO] [LOGIN] Сессия установлена: {"isModerator":true,"userId":4,"username":"vova"}
|
||||
[2026-08-10T19:54:26.780Z] [INFO] [LOGIN] Ответ отправлен
|
||||
[2026-08-10T19:57:35.827Z] [INFO] [DB CHECK] Проверка подключения к MySQL: localhost:3306/rasch_content
|
||||
[2026-08-10T19:57:35.848Z] [INFO] [DB CHECK] ✅ Успешное подключение к MySQL
|
||||
[2026-08-10T20:00:31.524Z] [ERROR] PayloadTooLargeError: request entity too large
|
||||
at readStream (D:\rasch\admin-server1\node_modules\raw-body\index.js:163:17)
|
||||
at getRawBody (D:\rasch\admin-server1\node_modules\raw-body\index.js:116:12)
|
||||
at read (D:\rasch\admin-server1\node_modules\body-parser\lib\read.js:113:3)
|
||||
at jsonParser (D:\rasch\admin-server1\node_modules\body-parser\lib\types\json.js:60:5)
|
||||
at Layer.handleRequest (D:\rasch\admin-server1\node_modules\router\lib\layer.js:152:17)
|
||||
at trimPrefix (D:\rasch\admin-server1\node_modules\router\index.js:342:13)
|
||||
at D:\rasch\admin-server1\node_modules\router\index.js:297:9
|
||||
at processParams (D:\rasch\admin-server1\node_modules\router\index.js:582:12)
|
||||
at next (D:\rasch\admin-server1\node_modules\router\index.js:291:5)
|
||||
at logger (D:\rasch\admin-server1\node_modules\morgan\index.js:170:5)
|
||||
[2026-08-10T20:02:19.620Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:02:19.623Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:05:33.895Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:05:33.899Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:08:11.744Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:08:11.746Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:09:55.295Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:09:55.298Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:11:38.925Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:11:38.928Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:13:11.668Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:13:11.671Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:13:47.030Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:13:47.033Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:17:59.208Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:17:59.211Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:18:33.110Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:18:33.113Z] [INFO] Card logs initialized successfully
|
||||
[2026-08-10T20:24:20.748Z] [INFO] Server running on http://localhost:3005
|
||||
[2026-08-10T20:24:20.752Z] [INFO] Card logs initialized successfully
|
||||
|
||||
@@ -37,7 +37,7 @@ const upload = multer({
|
||||
// Получить все блоки для вкладки
|
||||
router.get('/:tab', async (req, res) => {
|
||||
const { tab } = req.params;
|
||||
if (!['info', 'union'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
if (!['info', 'union', 'events', 'help', 'housing'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
try {
|
||||
const [rows] = await db.query('SELECT * FROM content_blocks WHERE tab = ? ORDER BY created_at ASC', [tab]);
|
||||
res.json(rows);
|
||||
@@ -57,7 +57,7 @@ router.post('/:tab/upload', requireModerator, upload.single('file'), (req, res)
|
||||
router.post('/:tab', requireModerator, async (req, res) => {
|
||||
const { tab } = req.params;
|
||||
const { content } = req.body;
|
||||
if (!['info', 'union'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
if (!['info', 'union', 'events', 'help', 'housing'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
try {
|
||||
const [result] = await db.query(
|
||||
'INSERT INTO content_blocks (tab, type, content, created_by, created_at, updated_at) VALUES (?, ?, ?, ?, NOW(), NOW())',
|
||||
@@ -73,7 +73,7 @@ router.post('/:tab', requireModerator, async (req, res) => {
|
||||
router.put('/:tab/:id', requireModerator, async (req, res) => {
|
||||
const { tab, id } = req.params;
|
||||
const { content } = req.body;
|
||||
if (!['info', 'union'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
if (!['info', 'union', 'events', 'help', 'housing'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
try {
|
||||
await db.query(
|
||||
'UPDATE content_blocks SET content = ?, updated_at = NOW() WHERE id = ? AND tab = ?',
|
||||
@@ -88,7 +88,7 @@ router.put('/:tab/:id', requireModerator, async (req, res) => {
|
||||
// Удалить блок
|
||||
router.delete('/:tab/:id', requireModerator, async (req, res) => {
|
||||
const { tab, id } = req.params;
|
||||
if (!['info', 'union'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
if (!['info', 'union', 'events', 'help', 'housing'].includes(tab)) return res.status(400).json({ message: 'Некорректная вкладка' });
|
||||
try {
|
||||
await db.query('DELETE FROM content_blocks WHERE id = ? AND tab = ?', [id, tab]);
|
||||
res.json({ message: 'Удалено' });
|
||||
@@ -96,5 +96,51 @@ router.delete('/:tab/:id', requireModerator, async (req, res) => {
|
||||
res.status(500).json({ message: 'Ошибка сервера' });
|
||||
}
|
||||
});
|
||||
router.get('/section/:section', async (req, res) => {
|
||||
const { section } = req.params;
|
||||
if (!['events', 'help', 'housing'].includes(section)) {
|
||||
return res.status(400).json({ message: 'Некорректный раздел' });
|
||||
}
|
||||
try {
|
||||
const [rows] = await db.query(
|
||||
'SELECT * FROM content_blocks WHERE tab = ? ORDER BY created_at ASC',
|
||||
[section]
|
||||
);
|
||||
// Если есть блоки — возвращаем их, иначе пустой массив
|
||||
res.json(rows);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).json({ message: 'Ошибка сервера' });
|
||||
}
|
||||
});
|
||||
|
||||
// Сохранить контент раздела (очищаем старые и вставляем новый)
|
||||
router.post('/section/:section', requireModerator, async (req, res) => {
|
||||
const { section } = req.params;
|
||||
const { content } = req.body;
|
||||
|
||||
if (!['events', 'help', 'housing'].includes(section)) {
|
||||
return res.status(400).json({ message: 'Некорректный раздел' });
|
||||
}
|
||||
|
||||
try {
|
||||
// Удаляем старые блоки для этого раздела
|
||||
await db.query('DELETE FROM content_blocks WHERE tab = ?', [section]);
|
||||
|
||||
// Вставляем новый блок
|
||||
const [result] = await db.query(
|
||||
'INSERT INTO content_blocks (tab, type, content, created_by, created_at, updated_at) VALUES (?, ?, ?, ?, NOW(), NOW())',
|
||||
[section, 'text', content, req.session.userId]
|
||||
);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
id: result.insertId,
|
||||
message: 'Раздел сохранён'
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).json({ message: 'Ошибка сервера' });
|
||||
}
|
||||
});
|
||||
module.exports = router;
|
||||
@@ -30,7 +30,7 @@ const sessionConfig = require('./config/session');
|
||||
app.use(helmet()); // Добавление helmet для защиты
|
||||
app.use(cors(corsConfig));
|
||||
app.use(morgan('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.json({ limit: '100mb' }));
|
||||
app.use(session(sessionConfig(session)));
|
||||
// Роуты
|
||||
app.use('/api/auth', authRouter);
|
||||
|
||||
Reference in New Issue
Block a user