diff options
| author | Adam Soltys <[email protected]> | 2022-12-15 13:35:12 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-12-15 13:35:12 -0800 |
| commit | e8525c6b4402346b5e19d7dd40d79e076a95941f (patch) | |
| tree | 630170b191d1174eff9942a7a1e9c5075f13217f /routes/users.js | |
| parent | 7809a9b0cb8c5f504b48f39c20aa21e0a628cdc5 (diff) | |
| download | coinos-server-e8525c6b4402346b5e19d7dd40d79e076a95941f.tar.gz coinos-server-e8525c6b4402346b5e19d7dd40d79e076a95941f.zip | |
move voucher endpoints
Diffstat (limited to 'routes/users.js')
| -rw-r--r-- | routes/users.js | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/routes/users.js b/routes/users.js index 02e7e3ed..c4b613eb 100644 --- a/routes/users.js +++ b/routes/users.js @@ -7,7 +7,6 @@ import axios from "axios"; import bcrypt from "bcrypt"; import jwt from "jsonwebtoken"; import { authenticator } from "otplib"; -import getAccount from "$lib/account"; import Sequelize from "@sequelize/core"; import bitcoin from "bitcoinjs-lib"; import liquid from "liquidjs-lib"; @@ -489,107 +488,6 @@ app.post("/subscribe", auth, async function(req, res) { res.sendStatus(201); }); -let redeeming = {}; -app.post("/redeem", optionalAuth, async function(req, res) { - const { redeemcode } = req.body; - try { - await db.transaction(async transaction => { - if (redeeming[redeemcode]) fail("redemption in progress"); - redeeming[redeemcode] = true; - if (!redeemcode) fail("no code provided"); - - let { user } = req; - - const source = await db.Payment.findOne({ - where: { - redeemcode: req.body.redeemcode - }, - include: { - model: db.Account, - as: "account" - }, - lock: transaction.LOCK.UPDATE, - transaction - }); - - l("redeeming", redeemcode); - - 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 - ); - - let payload = { username: user.username }; - let token = jwt.sign(payload, config.jwt); - res.cookie("token", token, { - expires: new Date(Date.now() + 432000000) - }); - - delete redeeming[redeemcode]; - return res.send({ user }); - } - - let account = await getAccount(source.account.asset, user, transaction); - let { hash, memo, confirmed, fee, network } = source; - - source.redeemed = true; - await source.save({ transaction }); - - let payment = await db.Payment.create( - { - amount, - account_id: account.id, - user_id: user.id, - hash: "Voucher " + redeemcode, - memo, - rate: store.rates[user.currency], - currency: user.currency, - confirmed, - network, - received: true, - fee - }, - { transaction } - ); - - await account.increment({ balance: amount }, { transaction }); - await account.reload({ transaction }); - - payment = payment.get({ plain: true }); - payment.account = account.get({ plain: true }); - emit(user.username, "payment", payment); - emit(user.username, "account", account); - - res.send({ payment }); - }); - } catch (e) { - delete redeeming[redeemcode]; - console.log(e); - err("problem redeeming", e.message); - return res.code(500).send("There was a problem redeeming the voucher"); - } -}); - -app.post("/checkRedeemCode", auth, async function(req, res) { - const { redeemcode } = req.body; - - const payment = await db.Payment.findOne({ where: { redeemcode } }); - res.send(payment); -}); - app.post("/password", auth, async function(req, res) { const { user } = req; const { password } = req.body; |
