diff options
| author | Adam Soltys <[email protected]> | 2022-08-23 15:56:16 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-08-23 15:56:16 -0700 |
| commit | 73685635d43e344abac591cb9ffa1e38c8d0f911 (patch) | |
| tree | 76f0f516fbb989252ca959cdb8f44b9caad94987 /routes/users.js | |
| parent | 653d14e8f7b8bee93847f1d330ad1d38ac2ffddf (diff) | |
| parent | 3f144a605f8f24c526581a2050d21a62b66c2f72 (diff) | |
| download | coinos-server-73685635d43e344abac591cb9ffa1e38c8d0f911.tar.gz coinos-server-73685635d43e344abac591cb9ffa1e38c8d0f911.zip | |
Merge branch 'master' into prod
Diffstat (limited to 'routes/users.js')
| -rw-r--r-- | routes/users.js | 8 |
1 files changed, 8 insertions, 0 deletions
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"); }) ); |
