aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
Diffstat (limited to 'routes')
-rw-r--r--routes/invoices.js28
-rw-r--r--routes/payments.js16
-rw-r--r--routes/users.js4
3 files changed, 43 insertions, 5 deletions
diff --git a/routes/invoices.js b/routes/invoices.js
index d1ec5338..2ca3b006 100644
--- a/routes/invoices.js
+++ b/routes/invoices.js
@@ -1,14 +1,38 @@
import { g, s } from "$lib/db";
import { generate } from "$lib/invoices";
+import got from "got";
+import config from "$config";
export default {
- async get({ query: { hash } }, res) {
+ async get({ params: { hash } }, res) {
let invoice = await g(`invoice:${hash}`);
- invoice.user = await g(`user:${invoice.uid}`);
+
+ if (invoice) {
+ invoice.user = await g(`user:${invoice.uid}`);
+ } else {
+ invoice = await got(`${config.classic}/invoice/${hash}`).json();
+ invoice.id = invoice.uuid;
+ invoice.classic = true;
+ invoice.user.username += "@classic";
+ }
+
res.send(invoice);
},
async create({ body: { invoice, user }, user: sender }, res) {
res.send(await generate({ invoice, user, sender }));
+ },
+
+ async classic({ params: { username } }, res) {
+ let invoice = await got
+ .post(`${config.classic}/invoice`, {
+ json: {
+ invoice: { amount: 0, network: "lightning" },
+ user: { username }
+ }
+ })
+ .json();
+
+ res.send(invoice);
}
};
diff --git a/routes/payments.js b/routes/payments.js
index 26708a44..c67e0f9b 100644
--- a/routes/payments.js
+++ b/routes/payments.js
@@ -7,13 +7,14 @@ import { l, err } from "$lib/logging";
import { fail, btc, sats } from "$lib/utils";
import { requirePin } from "$lib/auth";
import { debit, credit, confirm, types } from "$lib/payments";
+import got from "got";
import bc from "$lib/bitcoin";
import ln from "$lib/ln";
export default {
async create({ body, user }, res) {
- let { amount, hash, maxfee, name, memo, payreq, tip } = body;
+ let { amount, hash, maxfee, name, memo, payreq, tip, username } = body;
amount = parseInt(amount);
maxfee = parseInt(maxfee);
@@ -23,7 +24,18 @@ export default {
let p;
- if (payreq) {
+ if (username.endsWith("@classic")) {
+ let { username: source } = user;
+ username = username.replace("@classic", "");
+ p = await debit(hash, amount, 0, memo, user, types.classic);
+
+ await got
+ .post(`${config.classic}/admin/credit`, {
+ json: { username, amount, source },
+ headers: { authorization: `Bearer ${config.admin}` }
+ })
+ .json();
+ } else if (payreq) {
p = await debit(
hash,
amount + maxfee,
diff --git a/routes/users.js b/routes/users.js
index 4b5157ce..9830b2fc 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -183,11 +183,14 @@ export default {
let user = await g(`user:${uid}`);
if (!(user && user.migrated)) {
+ uid = user ? user.id : v4();
+
let { classic } = config;
try {
let { token } = await got
.post(`${classic}/login`, { json: { username, password } })
.json();
+
if (!token) fail();
user = await got(`${classic}/admin/migrate/${username}?zero=true`, {
@@ -197,7 +200,6 @@ export default {
let { balance } = user;
if (!user) fail();
- uid = v4();
user = {
...pick(user, fields),
id: uid,