aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-02-01 07:11:30 +0000
committerAdam Soltys <[email protected]>2023-02-01 07:11:30 +0000
commit235ab3bcf123e8224e7e8ac84f0138ee5790e8e9 (patch)
tree792dc88ba1342d0ef1f492cbfc349dc9526caf46
parente19cd05d0aaafe886521a64fb4a8591b38d1a95d (diff)
downloadcoinos-server-235ab3bcf123e8224e7e8ac84f0138ee5790e8e9.tar.gz
coinos-server-235ab3bcf123e8224e7e8ac84f0138ee5790e8e9.zip
credit endpoint
-rw-r--r--routes/users.js33
1 files changed, 33 insertions, 0 deletions
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;