mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +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.composer = require('./composer'); | ||||
|  | ||||
| Controllers.write = require('./write'); | ||||
|  | ||||
| Controllers.reset = function (req, res, next) { | ||||
| 	if (meta.config['password:disableEdit']) { | ||||
| 		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)); | ||||
| }; | ||||
|  | ||||
| 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') { | ||||
| 		return async function (req, res, next) { | ||||
| 			try { | ||||
| 				await controller(req, res, next); | ||||
| 			} catch (err) { | ||||
| 				if (handler) { | ||||
| 					return handler(err, res); | ||||
| 				} | ||||
|  | ||||
| 				next(err); | ||||
| 			} | ||||
| 		}; | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const users = require('../../user'); | ||||
|  | ||||
| const middleware = require('../../middleware'); | ||||
| const helpers = require('../../controllers/helpers'); | ||||
| const controllers = require('../../controllers'); | ||||
| const routeHelpers = require('../../routes/helpers'); | ||||
| // 	Messaging = require.main.require('./src/messaging'), | ||||
| // 	apiMiddleware = require('./middleware'), | ||||
| // 	errorHandler = require('../../lib/errorHandler'), | ||||
| @@ -13,16 +12,10 @@ const helpers = require('../../controllers/helpers'); | ||||
|  | ||||
|  | ||||
| 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) => { | ||||
| 		try { | ||||
| 			const uid = await users.create(req.body); | ||||
| 			helpers.formatApiResponse(200, res, await users.getUserData(uid)); | ||||
| 		} catch (err) { | ||||
| 			helpers.formatApiResponse(400, res, err); | ||||
| 		} | ||||
| 	}); | ||||
| 	setupApiRoute(router, '/', middleware, [middleware.checkRequired.bind(null, ['username']), middleware.isAdmin], 'post', controllers.write.users.create); | ||||
|  | ||||
| 	// 	app.route('/:uid') | ||||
| 	// 		.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