From 89519c0cd1cafeea9939110b99bcf865ffe617a0 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 12 May 2021 00:15:50 -0400 Subject: kyc notification --- routes/funding.js | 177 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 104 insertions(+), 73 deletions(-) diff --git a/routes/funding.js b/routes/funding.js index d9af4da7..8d94344e 100644 --- a/routes/funding.js +++ b/routes/funding.js @@ -1,3 +1,4 @@ +const mailgun = require("mailgun-js")(config.mailgun); const multer = require("multer"); const storage = multer.diskStorage({ @@ -6,8 +7,8 @@ const storage = multer.diskStorage({ }, filename: (req, file, cb) => { const parts = file.originalname.split("."); - const ext = parts.length > 1 ? parts[parts.length - 1] : 'bin'; - cb(null, `${req.user.username}-${file.fieldname}.${ext}`) + const ext = parts.length > 1 ? parts[parts.length - 1] : "bin"; + cb(null, `${req.user.username}-${file.fieldname}.${ext}`); } }); @@ -21,80 +22,110 @@ const upload = multer({ } }); -app.post("/id", auth, upload.single("id"), ah(async (req, res) => { - const { user } = req; - if (user.verified === 'proof') user.verified = 'pending'; - else user.verified = 'id'; - await user.save(); - emit(user.username, "user", user); - - res.end(); -})); - -app.post("/proof", auth, upload.single("proof"), ah(async (req, res) => { - const { user } = req; - if (user.verified === 'id') user.verified = 'pending'; - else user.verified = 'proof'; - await user.save(); - emit(user.username, "user", user); - - res.end(); -})); - -app.post("/funding", auth, ah(async (req, res) => { - try { - let { id, amount, code } = req.body; - - if (!code) { - code = ''; - let d = 'ABCDEFGHIJKLMNPQRSTUVWXYZ23456789'; - let l = d.length; - for (let i = 0; i < 8; i++) { - code += d.charAt(Math.floor(Math.random() * l)); - } - } +app.post( + "/id", + auth, + upload.single("id"), + ah(async (req, res) => { + const { user } = req; + if (user.verified === "proof") user.verified = "pending"; + else user.verified = "id"; + await user.save(); + emit(user.username, "user", user); - let params = { - user_id: req.user.id, - amount, - code, + let data = { + ...config.mail, + subject: "KYC Documents", + text: `ID uploaded for ${user.username}`, + from: "adam@coinos.io", + to: "kyc@coinos.io" }; - let deposit; - if (id) { - if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount"); - deposit = await db.Deposit.findOne({ where: { id } }) - deposit.update(params); - await deposit.save(); - } else { - deposit = await db.Deposit.create(params); - } + mailgun.messages().send(data); + + res.end(); + }) +); - res.send(deposit); - } catch(e) { - l.error("funding error", e.message); - res.status(500).send("Funding request failed"); - } -})); - -app.post("/withdrawal", auth, ah(async (req, res) => { - try { - const { account, amount, email, institution, transit, notes } = req.body; - if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount"); - - await db.Withdrawal.create({ - user_id: req.user.id, - account, - amount, - email, - institution, - transit, - notes, - }); +app.post( + "/proof", + auth, + upload.single("proof"), + ah(async (req, res) => { + const { user } = req; + if (user.verified === "id") user.verified = "pending"; + else user.verified = "proof"; + await user.save(); + emit(user.username, "user", user); res.end(); - } catch(e) { - l.error("withdrawal error", e.message); - res.status(500).send("Withdrawal request failed"); - } -})); + }) +); + +app.post( + "/funding", + auth, + ah(async (req, res) => { + try { + let { id, amount, code } = req.body; + + if (!code) { + code = ""; + let d = "ABCDEFGHIJKLMNPQRSTUVWXYZ23456789"; + let l = d.length; + for (let i = 0; i < 8; i++) { + code += d.charAt(Math.floor(Math.random() * l)); + } + } + + let params = { + user_id: req.user.id, + amount, + code + }; + + let deposit; + if (id) { + if (!parseFloat(amount) || parseFloat(amount) < 0) + throw new Error("Invalid amount"); + deposit = await db.Deposit.findOne({ where: { id } }); + deposit.update(params); + await deposit.save(); + } else { + deposit = await db.Deposit.create(params); + } + + res.send(deposit); + } catch (e) { + l.error("funding error", e.message); + res.status(500).send("Funding request failed"); + } + }) +); + +app.post( + "/withdrawal", + auth, + ah(async (req, res) => { + try { + const { account, amount, email, institution, transit, notes } = req.body; + if (!parseFloat(amount) || parseFloat(amount) < 0) + throw new Error("Invalid amount"); + + await db.Withdrawal.create({ + user_id: req.user.id, + account, + amount, + email, + institution, + transit, + notes + }); + + res.end(); + } catch (e) { + l.error("withdrawal error", e.message); + res.status(500).send("Withdrawal request failed"); + } + }) +); -- cgit v1.2.3