diff --git a/src/modules/auth/controller.js b/src/modules/auth/controller.js new file mode 100644 index 0000000..e244550 --- /dev/null +++ b/src/modules/auth/controller.js @@ -0,0 +1,23 @@ +import passport from 'koa-passport' +import jwt from 'jsonwebtoken' +import config from '../../config' + +export async function authUser(ctx, next) { + return passport.authenticate('local', (user) => { + if (!user) { + ctx.throw(401) + } + + const token = jwt.sign({ id: user.id }, config.token) + + const response = user.toJSON() + + delete response.password + delete response.salt + + ctx.body = { + token, + user: response + } + })(ctx, next) +} diff --git a/src/modules/auth/router.js b/src/modules/auth/router.js new file mode 100644 index 0000000..fab2e6b --- /dev/null +++ b/src/modules/auth/router.js @@ -0,0 +1,13 @@ +import * as auth from './controller' + +export default { + base: '/auth', + + 'Authenticate user': { + method: 'POST', + route: '/', + handlers: [ + auth.authUser + ] + } +}