mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +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'),
|
||||
flags: require('./flags'),
|
||||
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 cacheCreate = require('../cache/lru');
|
||||
const helpers = require('./helpers');
|
||||
const api = require('../api');
|
||||
|
||||
const controllers = {
|
||||
api: require('../controllers/api'),
|
||||
@@ -115,6 +116,15 @@ middleware.prepareAPI = function prepareAPI(req, res, 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) {
|
||||
if (meta.config['brand:touchIcon'] && validator.isURL(meta.config['brand:touchIcon'])) {
|
||||
return res.redirect(meta.config['brand:touchIcon']);
|
||||
|
||||
@@ -57,6 +57,7 @@ helpers.setupApiRoute = function (...args) {
|
||||
middleware.maintenanceMode,
|
||||
middleware.registrationComplete,
|
||||
middleware.pluginHooks,
|
||||
middleware.logApiUsage,
|
||||
...middlewares,
|
||||
];
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ const plugins = require('../../plugins');
|
||||
const middleware = require('../../middleware');
|
||||
const writeControllers = require('../../controllers/write');
|
||||
const helpers = require('../../controllers/helpers');
|
||||
const { setupApiRoute } = require('../helpers');
|
||||
|
||||
const Write = module.exports;
|
||||
|
||||
@@ -43,8 +44,8 @@ Write.reload = async (params) => {
|
||||
router.use('/api/v3/files', require('./files')());
|
||||
router.use('/api/v3/utilities', require('./utilities')());
|
||||
|
||||
router.get('/api/v3/ping', writeControllers.utilities.ping.get);
|
||||
router.post('/api/v3/ping', middleware.authenticateRequest, middleware.ensureLoggedIn, writeControllers.utilities.ping.post);
|
||||
setupApiRoute(router, 'get', '/api/v3/ping', writeControllers.utilities.ping.get);
|
||||
setupApiRoute(router, 'post', '/api/v3/ping', writeControllers.utilities.ping.post);
|
||||
|
||||
/**
|
||||
* Plugins can add routes to the Write API by attaching a listener to the
|
||||
|
||||
Reference in New Issue
Block a user