mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix(refactor): patching helpers.tryRoute for API routes, some re-org
Thanks @barisusakli for the tip
This commit is contained in:
@@ -38,6 +38,8 @@ Controllers['404'] = require('./404');
|
|||||||
Controllers.errors = require('./errors');
|
Controllers.errors = require('./errors');
|
||||||
Controllers.composer = require('./composer');
|
Controllers.composer = require('./composer');
|
||||||
|
|
||||||
|
Controllers.write = require('./write');
|
||||||
|
|
||||||
Controllers.reset = function (req, res, next) {
|
Controllers.reset = function (req, res, next) {
|
||||||
if (meta.config['password:disableEdit']) {
|
if (meta.config['password:disableEdit']) {
|
||||||
return helpers.notAllowed(req, res);
|
return helpers.notAllowed(req, res);
|
||||||
|
|||||||
5
src/controllers/write/index.js
Normal file
5
src/controllers/write/index.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Write = module.exports;
|
||||||
|
|
||||||
|
Write.users = require('./users');
|
||||||
11
src/controllers/write/users.js
Normal file
11
src/controllers/write/users.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const users = require('../../user');
|
||||||
|
const helpers = require('../helpers');
|
||||||
|
|
||||||
|
const Users = module.exports;
|
||||||
|
|
||||||
|
Users.create = async (req, res) => {
|
||||||
|
const uid = await users.create(req.body);
|
||||||
|
helpers.formatApiResponse(200, res, await users.getUserData(uid));
|
||||||
|
};
|
||||||
@@ -14,12 +14,23 @@ helpers.setupAdminPageRoute = function (router, name, middleware, middlewares, c
|
|||||||
router.get('/api' + name, middlewares, helpers.tryRoute(controller));
|
router.get('/api' + name, middlewares, helpers.tryRoute(controller));
|
||||||
};
|
};
|
||||||
|
|
||||||
helpers.tryRoute = function (controller) {
|
helpers.setupApiRoute = function (router, name, middleware, middlewares, verb, controller) {
|
||||||
|
router[verb](name, middleware.authenticate, middlewares, helpers.tryRoute(controller, (err, res) => {
|
||||||
|
helpers.formatApiResponse(400, res, err);
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
helpers.tryRoute = function (controller, handler) {
|
||||||
|
// `handler` is optional
|
||||||
if (controller && controller.constructor && controller.constructor.name === 'AsyncFunction') {
|
if (controller && controller.constructor && controller.constructor.name === 'AsyncFunction') {
|
||||||
return async function (req, res, next) {
|
return async function (req, res, next) {
|
||||||
try {
|
try {
|
||||||
await controller(req, res, next);
|
await controller(req, res, next);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
if (handler) {
|
||||||
|
return handler(err, res);
|
||||||
|
}
|
||||||
|
|
||||||
next(err);
|
next(err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const users = require('../../user');
|
|
||||||
|
|
||||||
const middleware = require('../../middleware');
|
const middleware = require('../../middleware');
|
||||||
const helpers = require('../../controllers/helpers');
|
const controllers = require('../../controllers');
|
||||||
|
const routeHelpers = require('../../routes/helpers');
|
||||||
// Messaging = require.main.require('./src/messaging'),
|
// Messaging = require.main.require('./src/messaging'),
|
||||||
// apiMiddleware = require('./middleware'),
|
// apiMiddleware = require('./middleware'),
|
||||||
// errorHandler = require('../../lib/errorHandler'),
|
// errorHandler = require('../../lib/errorHandler'),
|
||||||
@@ -13,16 +12,10 @@ const helpers = require('../../controllers/helpers');
|
|||||||
|
|
||||||
|
|
||||||
module.exports = function () {
|
module.exports = function () {
|
||||||
var app = require('express').Router();
|
const router = require('express').Router();
|
||||||
|
const setupApiRoute = routeHelpers.setupApiRoute;
|
||||||
|
|
||||||
app.post('/', middleware.checkRequired.bind(null, ['username']), middleware.authenticate, middleware.isAdmin, async (req, res) => {
|
setupApiRoute(router, '/', middleware, [middleware.checkRequired.bind(null, ['username']), middleware.isAdmin], 'post', controllers.write.users.create);
|
||||||
try {
|
|
||||||
const uid = await users.create(req.body);
|
|
||||||
helpers.formatApiResponse(200, res, await users.getUserData(uid));
|
|
||||||
} catch (err) {
|
|
||||||
helpers.formatApiResponse(400, res, err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// app.route('/:uid')
|
// app.route('/:uid')
|
||||||
// .put(apiMiddleware.requireUser, apiMiddleware.exposeAdmin, function(req, res) {
|
// .put(apiMiddleware.requireUser, apiMiddleware.exposeAdmin, function(req, res) {
|
||||||
@@ -170,5 +163,5 @@ module.exports = function () {
|
|||||||
// });
|
// });
|
||||||
// });
|
// });
|
||||||
|
|
||||||
return app;
|
return router;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user