aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2021-09-29 13:05:31 -0700
committerAdam Soltys <[email protected]>2021-09-29 13:05:31 -0700
commitdf21b58a50ae4044ad121f06691d15f6b1773d10 (patch)
tree592caf10e3d03af49389438dd547be12c944a6ee
parentd87b3d5bce1add35eaf513b160ffc20f440168af (diff)
downloadcoinos-server-df21b58a50ae4044ad121f06691d15f6b1773d10.tar.gz
coinos-server-df21b58a50ae4044ad121f06691d15f6b1773d10.zip
re-enable vouchers
-rw-r--r--routes/send.js2
-rw-r--r--routes/swaps.js4
-rw-r--r--routes/users.js79
3 files changed, 45 insertions, 40 deletions
diff --git a/routes/send.js b/routes/send.js
index cdaa8a9b..c00e485a 100644
--- a/routes/send.js
+++ b/routes/send.js
@@ -53,7 +53,7 @@ module.exports = ah(async (req, res, next) => {
};
if (!username) {
- throw new Error("Vouchers temporarily disabled");
+ // 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/swaps.js b/routes/swaps.js
index ee047286..f20f98fa 100644
--- a/routes/swaps.js
+++ b/routes/swaps.js
@@ -103,7 +103,7 @@ const swap = async (user, { a1, a2, v1, v2 }) => {
}
]
},
- { transaction }
+ transaction
);
for (let i = 0; i < orders.length; i++) {
@@ -559,7 +559,7 @@ if (config.maker) {
order: [["rate", "ASC"]],
limit: 1
},
- { transaction }
+ transaction
);
if (bestAsk)
diff --git a/routes/users.js b/routes/users.js
index 5131e98a..498a9720 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -620,56 +620,61 @@ app.post(
"/redeem",
optionalAuth,
ah(async function(req, res) {
- return res.status(500).send("Vouchers temporarily disabled");
- const { redeemcode } = req.body;
- if (!redeemcode) fail("no code provided");
+ await db.transaction(async transaction => {
+ const { redeemcode } = req.body;
+ if (!redeemcode) fail("no code provided");
- let { user } = req;
+ let { user } = req;
- const source = await db.Payment.findOne({
- where: {
- redeemcode: req.body.redeemcode
- },
- include: {
- model: db.Account,
- as: "account"
- }
- });
+ const source = await db.Payment.findOne({
+ where: {
+ redeemcode: req.body.redeemcode
+ },
+ include: {
+ model: db.Account,
+ as: "account"
+ },
+ transaction
+ });
- l.info("redeeming", redeemcode);
+ l.info("redeeming", redeemcode);
- if (!source) fail("Invalid code");
- if (source.redeemed) fail("Voucher has already been redeemed");
+ if (!source) fail("Invalid code");
+ if (source.redeemed) fail("Voucher has already been redeemed");
+ let { amount } = source;
+ amount = -amount;
- if (!user) {
- const ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
- user = await register(
- {
- username: redeemcode.substr(0, 8),
- password: ""
- },
- ip,
- false
- );
+ if (!user) {
+ const ip =
+ req.headers["x-forwarded-for"] || req.connection.remoteAddress;
- let payload = { username: user.username };
- let token = jwt.sign(payload, config.jwt);
- res.cookie("token", token, { expires: new Date(Date.now() + 432000000) });
- return res.send({ user });
- } else {
- l.info("user", user.username);
- }
+ user = await register(
+ {
+ username: redeemcode.substr(0, 8),
+ password: ""
+ },
+ ip,
+ false
+ );
+
+ let payload = { username: user.username };
+ let token = jwt.sign(payload, config.jwt);
+ res.cookie("token", token, {
+ expires: new Date(Date.now() + 432000000)
+ });
+
+ return res.send({ user });
+ }
- await db.transaction(async transaction => {
let account = await getAccount(source.account.asset, user, transaction);
let { hash, memo, confirmed, fee, network } = source;
source.redeemed = true;
- await source.save();
+ await source.save({ transaction });
let payment = await db.Payment.create(
{
- amount: -source.amount,
+ amount,
account_id: account.id,
user_id: user.id,
hash: "Voucher " + redeemcode,
@@ -684,7 +689,7 @@ app.post(
{ transaction }
);
- await account.decrement({ balance: source.amount }, { transaction });
+ await account.increment({ balance: amount }, { transaction });
await account.reload({ transaction });
payment = payment.get({ plain: true });