'use strict'; /** * src/api/index.js — REST API v1. * * Монтируется в server.js ДО общего auth.middleware: * app.use('/api/v1', createApiRouter({ auth, q })) * * Аутентификация: только Bearer JWT (без сессий, без CSRF). * Ответы: JSON везде. * Переиспользует: src/queries.js, src/auth.js (middleware для валидации токена). * * Эндпоинты: * GET /api/v1/entries — список записей компании * POST /api/v1/entries — создать запись * PATCH /api/v1/entries/:id — обновить запись * DELETE /api/v1/entries/:id — удалить запись * GET /api/v1/companies — все компании (admin) * PATCH /api/v1/companies/:id/limit — установить лимит (admin) */ const express = require('express'); const { requireBearer } = require('./middleware/bearerAuth'); const { createEntriesRouter } = require('./routes/entries'); const { createAdminRouter } = require('./routes/admin'); function createApiRouter({ auth, q }) { const router = express.Router(); // Все /api/v1/* требуют Bearer — 401 JSON если нет токена router.use(requireBearer); // Валидация токена — Bearer-only (игнорирует сессию, всегда проверяет JWT) router.use(auth.bearerMiddleware); router.use('/entries', createEntriesRouter({ q })); router.use('/', createAdminRouter({ q })); return router; } module.exports = { createApiRouter };