From 409520d9f1a8ea2f46e8288468e4c39799e18e69 Mon Sep 17 00:00:00 2001 From: Adrian Obelmejias Date: Mon, 15 Feb 2016 16:36:18 -0500 Subject: [PATCH] Moved middleware to `middleware` directory --- src/middleware/index.js | 11 +++++++++++ src/middleware/validators.js | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/middleware/index.js create mode 100644 src/middleware/validators.js diff --git a/src/middleware/index.js b/src/middleware/index.js new file mode 100644 index 0000000..4f26450 --- /dev/null +++ b/src/middleware/index.js @@ -0,0 +1,11 @@ +export function errorMiddleware() { + return async (ctx, next) => { + try { + await next() + } catch (err) { + ctx.status = err.status || 500 + ctx.body = err.message + ctx.app.emit('error', err, ctx) + } + } +} diff --git a/src/middleware/validators.js b/src/middleware/validators.js new file mode 100644 index 0000000..1865312 --- /dev/null +++ b/src/middleware/validators.js @@ -0,0 +1,25 @@ +import User from '../models/users' +import config from '../../config/config' +import { verify } from 'jsonwebtoken' + +export async function ensureUser(ctx, next) { + const { token } = ctx.query + + if (!token) { + ctx.throw(401) + } + + let decoded = null + try { + decoded = verify(token, config.tokenSecret) + } catch (err) { + ctx.throw(401) + } + + const user = await User.findById(decoded.id, '-password -salt') + if (!user) { + ctx.throw(401) + } + + return next() +}