UNPKG

rutilus-analytics-node-js

Version:

Provides a GUI web app that allows users to examine their data in detail. Includes CSV export functionality.

99 lines (88 loc) 2.62 kB
/** * Rutilus * * @homepage https://gmrutilus.github.io * @license Apache-2.0 */ /** * Contains the route used to recover an account */ /** @module */ module.exports = /** @param {KoaCtx} ctx @param {Function} next */ async (ctx, next) => { const { errorHandler, schemas, emailer, } = ctx.res; const { email, password, token, } = ctx.request.body; // Requesting a token by email if (email && (!password && !token)) { await new Promise((resolve) => { schemas.Accounts.generateToken(email, (err, token) => { if (err) { ctx.res.status = { requestingToken: true, userFound: 0, error: errorHandler.dbErrorCatcher(err), }; } else if (!token) { ctx.res.status = { requestingToken: true, userFound: 0, } } else { emailer.sendPasswordRecovery(email, token); ctx.res.status = { requestingToken: true, userFound: 1, token, }; } resolve(); }); }); } // Resetting the password else if (password && token && !email) { await new Promise((resolve) => { schemas.Accounts.resetPassword(password, token, (err, didReset) => { if (err) { ctx.res.status = { requestingToken: false, passwordUpdated: false, userFound: 0, error: errorHandler.dbErrorCatcher(err) }; } else if (!didReset) { ctx.res.status = { requestingToken: false, passwordUpdated: false, userFound: 0, }; } else { ctx.res.status = { requestingToken: false, passwordUpdated: true, userFound: 1, }; } resolve(); }); }); } else { ctx.res.status = { error: 'Illegal parameters', }; } if (next) { await next(); } };