From 235ab3bcf123e8224e7e8ac84f0138ee5790e8e9 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 1 Feb 2023 07:11:30 +0000 Subject: credit endpoint --- routes/users.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/routes/users.js b/routes/users.js index 09b00003..eea6c1af 100644 --- a/routes/users.js +++ b/routes/users.js @@ -22,6 +22,7 @@ import { requirePin } from "$lib/utils"; import { coinos, q } from "$lib/nostr"; import got from "got"; import { bech32 } from "bech32"; +import { v4 } from "uuid"; const { encode, decode, fromWords, toWords } = bech32; @@ -79,6 +80,38 @@ app.get("/admin/migrate/:username", adminAuth, async (req, res) => { res.send(user); }); +app.post("/admin/credit", adminAuth, async (req, res) => { + let { amount, username, source } = req.body; + let user = await db.User.findOne({ where: { username } }); + let account = await db.Account.findOne({ + where: { user_id: user.id, pubkey: null, asset: config.liquid.btcasset }, + order: [["balance", "DESC"]], + }); + + await account.increment({ balance: amount }); + + let p = await db.Payment.create({ + amount, + account_id: account.id, + user_id: user.id, + rate: store.rates[user.currency], + currency: user.currency, + confirmed: true, + hash: `#${v4().substr(0, 6)} Payment from ${source}`, + network: "COINOS", + received: true, + }); + + p = p.get({ plain: true }); + p.account = account.get({ plain: true }); + + emit(username, "payment", p); + emit(username, "account", p.account); + + l("credited", username, amount); + res.send({}); +}); + app.get("/users/:username", async (req, res) => { try { let { username } = req.params; -- cgit v1.2.3