mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
feat: log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper
This commit is contained in:
@@ -10,4 +10,6 @@ module.exports = {
|
|||||||
categories: require('./categories'),
|
categories: require('./categories'),
|
||||||
flags: require('./flags'),
|
flags: require('./flags'),
|
||||||
files: require('./files'),
|
files: require('./files'),
|
||||||
|
|
||||||
|
utils: require('./utils'),
|
||||||
};
|
};
|
||||||
|
|||||||
11
src/api/utils.js
Normal file
11
src/api/utils.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const db = require('../database');
|
||||||
|
|
||||||
|
const utils = module.exports;
|
||||||
|
|
||||||
|
// internal token management utilities only
|
||||||
|
|
||||||
|
utils.log = async (token) => {
|
||||||
|
await db.sortedSetAdd('tokens:lastSeen', Date.now(), token);
|
||||||
|
};
|
||||||
@@ -16,6 +16,7 @@ const analytics = require('../analytics');
|
|||||||
const privileges = require('../privileges');
|
const privileges = require('../privileges');
|
||||||
const cacheCreate = require('../cache/lru');
|
const cacheCreate = require('../cache/lru');
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
|
const api = require('../api');
|
||||||
|
|
||||||
const controllers = {
|
const controllers = {
|
||||||
api: require('../controllers/api'),
|
api: require('../controllers/api'),
|
||||||
@@ -115,6 +116,15 @@ middleware.prepareAPI = function prepareAPI(req, res, next) {
|
|||||||
next();
|
next();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
middleware.logApiUsage = async function logApiUsage(req, res, next) {
|
||||||
|
if (req.headers.hasOwnProperty('authorization')) {
|
||||||
|
const [, token] = req.headers.authorization.split(' ');
|
||||||
|
await api.utils.log(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
|
||||||
middleware.routeTouchIcon = function routeTouchIcon(req, res) {
|
middleware.routeTouchIcon = function routeTouchIcon(req, res) {
|
||||||
if (meta.config['brand:touchIcon'] && validator.isURL(meta.config['brand:touchIcon'])) {
|
if (meta.config['brand:touchIcon'] && validator.isURL(meta.config['brand:touchIcon'])) {
|
||||||
return res.redirect(meta.config['brand:touchIcon']);
|
return res.redirect(meta.config['brand:touchIcon']);
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ helpers.setupApiRoute = function (...args) {
|
|||||||
middleware.maintenanceMode,
|
middleware.maintenanceMode,
|
||||||
middleware.registrationComplete,
|
middleware.registrationComplete,
|
||||||
middleware.pluginHooks,
|
middleware.pluginHooks,
|
||||||
|
middleware.logApiUsage,
|
||||||
...middlewares,
|
...middlewares,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const plugins = require('../../plugins');
|
|||||||
const middleware = require('../../middleware');
|
const middleware = require('../../middleware');
|
||||||
const writeControllers = require('../../controllers/write');
|
const writeControllers = require('../../controllers/write');
|
||||||
const helpers = require('../../controllers/helpers');
|
const helpers = require('../../controllers/helpers');
|
||||||
|
const { setupApiRoute } = require('../helpers');
|
||||||
|
|
||||||
const Write = module.exports;
|
const Write = module.exports;
|
||||||
|
|
||||||
@@ -43,8 +44,8 @@ Write.reload = async (params) => {
|
|||||||
router.use('/api/v3/files', require('./files')());
|
router.use('/api/v3/files', require('./files')());
|
||||||
router.use('/api/v3/utilities', require('./utilities')());
|
router.use('/api/v3/utilities', require('./utilities')());
|
||||||
|
|
||||||
router.get('/api/v3/ping', writeControllers.utilities.ping.get);
|
setupApiRoute(router, 'get', '/api/v3/ping', writeControllers.utilities.ping.get);
|
||||||
router.post('/api/v3/ping', middleware.authenticateRequest, middleware.ensureLoggedIn, writeControllers.utilities.ping.post);
|
setupApiRoute(router, 'post', '/api/v3/ping', writeControllers.utilities.ping.post);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugins can add routes to the Write API by attaching a listener to the
|
* Plugins can add routes to the Write API by attaching a listener to the
|
||||||
|
|||||||
Reference in New Issue
Block a user