Files
ipwhitelist-app/v1_legacy/src/api/index.js
T

42 lines
1.6 KiB
JavaScript

'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 };