mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +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