Module intializer - generates routes and connects to controller

This commit is contained in:
Adrian Obelmejias
2016-03-05 14:12:09 -05:00
parent 184451f9fc
commit d4434e2ef8
3 changed files with 55 additions and 1 deletions
+30
View File
@@ -0,0 +1,30 @@
import glob from 'glob'
import Router from 'koa-router'
exports = module.exports = function initModules(app) {
glob(`${__dirname}/*`, { ignore: '**/index.js' }, (err, matches) => {
if (err) { throw err }
matches.forEach((mod) => {
const routerConfig = require(`${mod}/router`).default
const router = new Router({ prefix: routerConfig.base })
for (const [key, props] of Object.entries(routerConfig)) {
if (key === 'base') { continue }
const {
method = '',
route = '',
middleware = [],
controller
} = props
router[method.toLowerCase()](route, controller)
app
.use(router.routes())
.use(router.allowedMethods())
}
})
})
}
+23
View File
@@ -0,0 +1,23 @@
import User from '../../models/users'
import config from '../../../config'
import jwt from 'jsonwebtoken'
export async function createUser(ctx) {
const user = new User(ctx.request.body.user)
try {
await user.save()
const token = jwt.sign({ id: user.id }, config.token)
const response = user.toJSON()
delete response.password
delete response.salt
ctx.body = {
user: response,
token
}
} catch (err) {
ctx.throw(422, err)
}
}
+2 -1
View File
@@ -41,8 +41,9 @@ export default {
* "error": "Unprocessable Entity"
* }
*/
'/': {
'Create new users': {
method: 'POST',
route: '/',
controller: createUser
}
}