aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/passport.js8
-rw-r--r--lib/sockets.js26
-rw-r--r--lib/utils.js29
-rw-r--r--routes/liquid/receive.js31
-rw-r--r--routes/users.js15
5 files changed, 64 insertions, 45 deletions
diff --git a/lib/passport.js b/lib/passport.js
index 1e4fd8b8..81f4e948 100644
--- a/lib/passport.js
+++ b/lib/passport.js
@@ -1,5 +1,6 @@
const Passport = require("passport");
const jwt = require("passport-jwt");
+const { getUser } = require("./utils");
function cookieExtractor(req) {
if (req && req.cookies) return req.cookies["token"];
@@ -17,12 +18,7 @@ passport = Passport.use(
},
async (payload, next) => {
try {
- let user = await db.User.findOne({
- where: {
- username: payload.username
- }
- });
- next(null, user);
+ next(null, await getUser(payload.username));
} catch (e) {
l.error("error finding user for session", e);
next(null, { username: "guest" });
diff --git a/lib/sockets.js b/lib/sockets.js
index f35ca5f5..ad7295b0 100644
--- a/lib/sockets.js
+++ b/lib/sockets.js
@@ -1,6 +1,6 @@
const jwt = require("jsonwebtoken");
const io = require("socket.io");
-const { Op } = require("sequelize");
+const { getUser } = require("./utils");
/* eslint-disable-next-line */
const pick = (O, ...K) => K.reduce((o, k) => ((o[k] = O[k]), o), {});
@@ -38,29 +38,7 @@ socket.sockets.on("connect", async socket => {
if (app.get("rates")) socket.emit("rate", app.get("rates").ask);
socket.on("getuser", async (data, callback) => {
l.info("socket open", socket.request.user);
- const user = await db.User.findOne({
- include: [
- {
- model: db.Payment,
- as: "payments",
- order: [["id", "DESC"]],
- where: {
- [Op.or]: {
- received: true,
- amount: {
- [Op.lt]: 0,
- },
- },
- },
- limit: 12
- }
- ],
- where: {
- username: socket.request.user
- }
- });
-
- callback(user);
+ callback(await getUser(socket.request.user));
});
socket.on("disconnect", s => {
diff --git a/lib/utils.js b/lib/utils.js
new file mode 100644
index 00000000..c6e02a1a
--- /dev/null
+++ b/lib/utils.js
@@ -0,0 +1,29 @@
+const { Op } = require("sequelize");
+
+module.exports = {
+ async getUser(username) {
+ return db.User.findOne({
+ include: [
+ {
+ model: db.Payment,
+ as: "payments",
+ order: [["id", "DESC"]],
+ where: {
+ [Op.or]: {
+ received: true,
+ amount: {
+ [Op.lt]: 0
+ }
+ }
+ },
+ limit: 12
+ },
+ {
+ model: db.Account,
+ as: "accounts"
+ }
+ ],
+ where: { username }
+ });
+ }
+};
diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js
index ff58f1c4..1a70c61c 100644
--- a/routes/liquid/receive.js
+++ b/routes/liquid/receive.js
@@ -59,7 +59,6 @@ zmqRawTx.on("message", async (topic, message, sequence) => {
where: params
});
- console.log("params", params);
if (account) {
account.pending += value;
await account.save();
@@ -127,13 +126,36 @@ setInterval(async () => {
let hash = arr[i];
let p = await db.Payment.findOne({
- include: [{ model: db.User, as: "user" }],
where: { hash, confirmed: 0, received: 1 }
});
- p.confirmed = 1;
+ const user = await db.User.findOne({
+ include: [
+ {
+ model: db.Payment,
+ as: "payments",
+ order: [["id", "DESC"]],
+ where: {
+ [Op.or]: {
+ received: true,
+ amount: {
+ [Op.lt]: 0,
+ },
+ },
+ },
+ limit: 12
+ },
+ {
+ model: db.Account,
+ as: "accounts",
+ },
+ ],
+ where: {
+ id: p.user_id
+ }
+ });
- let user = await p.getUser();
+ p.confirmed = 1;
const asset = await db.Account.findOne({
where: {
@@ -148,6 +170,7 @@ setInterval(async () => {
} else {
asset.balance += p.amount + p.tip;
asset.pending -= Math.min(user.pending, p.amount + p.tip);
+ await asset.save();
}
l.info("liquid confirmed", user.username, p.asset, p.amount, p.tip);
diff --git a/routes/users.js b/routes/users.js
index 83f8920e..7c9bce31 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -4,6 +4,7 @@ const jwt = require("jsonwebtoken");
const uuidv4 = require("uuid/v4");
const fb = "https://graph.facebook.com/";
const authenticator = require("otplib").authenticator;
+const { getUser } = require("../lib/utils");
const pick = (O, ...K) => K.reduce((o, k) => ((o[k] = O[k]), o), {});
let faucet = 1000;
@@ -182,7 +183,7 @@ app.post("/user", auth, async (req, res) => {
}
await user.save();
- emit(user.username, "user", req.user);
+ emit(user.username, "user", user);
res.send({ user, token });
} catch (e) {
l.error("error updating user", e);
@@ -193,11 +194,7 @@ app.post("/login", async (req, res) => {
let twofa = req.body.token;
try {
- let user = await db.User.findOne({
- where: {
- username: req.body.username
- }
- });
+ let user = await getUser(req.body.username);
if (
!user ||
@@ -239,11 +236,7 @@ app.post("/facebookLogin", async (req, res) => {
if (!check.data.data.is_valid) return res.status(401).end();
try {
- let user = await db.User.findOne({
- where: {
- username: req.body.userID
- }
- });
+ let user = await getUser(req.body.userID);
if (!user) {
user = await db.User.create(user);