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() +}