aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-07-07 19:02:37 -0700
committerAdam Soltys <[email protected]>2020-07-07 19:03:10 -0700
commit3dd0d83f3900818344e534681cf13155c210bd22 (patch)
tree5d6c329bd88eaf70881d19b7359c302c92585f13 /routes
parent096ea59db20e729098066435ab5a8c4cfa01457d (diff)
downloadcoinos-server-3dd0d83f3900818344e534681cf13155c210bd22.tar.gz
coinos-server-3dd0d83f3900818344e534681cf13155c210bd22.zip
handle login decode
Diffstat (limited to 'routes')
-rw-r--r--routes/lnurl.js31
1 files changed, 23 insertions, 8 deletions
diff --git a/routes/lnurl.js b/routes/lnurl.js
index 3e32b1f2..88c2f67a 100644
--- a/routes/lnurl.js
+++ b/routes/lnurl.js
@@ -1,6 +1,7 @@
const axios = require("axios");
const lnurl = require("lnurl");
const jwt = require("jsonwebtoken");
+const qs = require("query-string");
logins = {};
withdrawals = {};
@@ -80,9 +81,19 @@ app.get("/decode", async (req, res) => {
const { text } = req.query;
try {
- const decoded = lnurl.decode(text);
- let result = await axios.get(decoded);
- res.send(result.data);
+ const url = lnurl.decode(text);
+ let spl = url.split("?");
+ if (spl.length > 1 && qs.parse(spl[1]).tag === "login") {
+ return res.send({
+ tag: "login",
+ k1: qs.parse(spl[1]).k1,
+ callback: url,
+ domain: url.split("://")[1].split("/")[0].split("@").slice(-1)[0].split(":")[0],
+ });
+ }
+
+ const { data: params } = await axios.get(url);
+ res.send(params);
} catch (e) {
l.error("problem decoding lnurl", e.message);
res.status(500).send(e.message);
@@ -110,11 +121,15 @@ lnurlServer.bindToHook(
if (keyObj) ({ user } = keyObj);
if (!user) {
- let ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
- user = await register({
- username: key.substr(0, 8),
- password: key,
- }, ip);
+ let ip =
+ req.headers["x-forwarded-for"] || req.connection.remoteAddress;
+ user = await register(
+ {
+ username: key.substr(0, 8),
+ password: key,
+ },
+ ip
+ );
}
({ username } = user);