sqlpad
Version:
Web app. Write SQL and visualize the results. Supports Postgres, MySQL, SQL Server, Crate, Vertica and SAP HANA.
42 lines (33 loc) • 1.13 kB
JavaScript
const router = require('express').Router();
const uuid = require('uuid');
const User = require('../models/User.js');
const email = require('../lib/email');
const sendError = require('../lib/sendError');
const config = require('../lib/config');
router.post('/api/forgot-password', async function(req, res) {
if (!req.body.email) {
return sendError(res, null, 'Email address must be provided');
}
if (!config.smtpConfigured()) {
return sendError(res, null, 'Email must be configured');
}
try {
const user = await User.findOneByEmail(req.body.email);
// If user not found send success regardless
// This is not a user-validation service
if (!user) {
return res.json({});
}
user.passwordResetId = uuid.v4();
await user.save();
// Send email, but do not block response
const resetPath = `/password-reset/${user.passwordResetId}`;
email
.sendForgotPassword(req.body.email, resetPath)
.catch(error => console.error(error));
return res.json({});
} catch (error) {
sendError(res, error, 'Problem saving user');
}
});
module.exports = router;