v0.5.166: /export→/v2/export редирект, экспорт только админам
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
'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 };
|
||||
Reference in New Issue
Block a user