From 906a72dc7db448848587bf5bc36c0d8caf7ef7cc Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 23 Aug 2022 15:53:10 -0700 Subject: enable vouchers --- routes/send.js | 1 - routes/users.js | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/routes/send.js b/routes/send.js index 4c8afa34..653da87b 100644 --- a/routes/send.js +++ b/routes/send.js @@ -66,7 +66,6 @@ module.exports = ah(async (req, res, next) => { }; if (!username) { - throw new Error("Vouchers temporarily disabled"); l.info("creating redeemable payment"); params.redeemcode = uuidv4(); params.hash = `${req.get("origin")}/redeem/${params.redeemcode}`; diff --git a/routes/users.js b/routes/users.js index 4fe1362b..c9367c9a 100644 --- a/routes/users.js +++ b/routes/users.js @@ -634,12 +634,16 @@ app.post( }) ); +let redeeming = {}; app.post( "/redeem", optionalAuth, ah(async function(req, res) { + try { await db.transaction(async transaction => { const { redeemcode } = req.body; + if (redeeming[redeemcode]) fail("redemption in progress"); + redeeming[redeemcode] = true; if (!redeemcode) fail("no code provided"); let { user } = req; @@ -652,6 +656,7 @@ app.post( model: db.Account, as: "account" }, + lock: transaction.LOCK.UPDATE, transaction }); @@ -717,6 +722,9 @@ app.post( res.send({ payment }); }); + } catch(e) { + l.error("problem redeeming", e.message); + return res.status(500).send("There was a problem redeeming the voucher"); }) ); -- cgit v1.2.3