diff options
| author | Adam Soltys <[email protected]> | 2021-12-16 22:05:36 -0500 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2021-12-16 22:05:43 -0500 |
| commit | 667302c91ceb1c1477782a6262d8d618ccd133e6 (patch) | |
| tree | c51f0f21b2ea3c3cf51fe56b9890514cfbf3a543 /routes/users.js | |
| parent | 14d870dec052c4ae279933983d56ab6a0149bc1e (diff) | |
| download | coinos-server-667302c91ceb1c1477782a6262d8d618ccd133e6.tar.gz coinos-server-667302c91ceb1c1477782a6262d8d618ccd133e6.zip | |
check for payment existence
Diffstat (limited to 'routes/users.js')
| -rw-r--r-- | routes/users.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/routes/users.js b/routes/users.js index df42d82d..6ff515fc 100644 --- a/routes/users.js +++ b/routes/users.js @@ -303,6 +303,68 @@ app.post( ); app.post( + "/login", + ah(async (req, res) => { + try { + const { params, sig, key } = req.body; + + if (sig) { + const { callback } = params; + + try { + const url = `${callback}&sig=${sig}&key=${key}`; + const response = await axios.get(url); + res.send(response.data); + } catch (e) { + l.error("problem calling lnurl login", e.message); + res.status(500).send(e.message); + } + + return; + } + + let twofa = req.body.token; + + let user = await getUser(req.body.username); + + if ( + !user || + (user.password && + !(await bcrypt.compare(req.body.password, user.password))) + ) { + l.warn("invalid username or password attempt", req.body.username); + return res.status(401).end(); + } + + if ( + user.twofa && + (typeof twofa === "undefined" || + !authenticator.check(twofa, user.otpsecret)) + ) { + return res.status(401).send("2fa required"); + } + + l.info( + "login", + req.body.username, + req.headers["x-forwarded-for"] || req.connection.remoteAddress + ); + + let payload = { username: user.username }; + let token = jwt.sign(payload, config.jwt); + res.cookie("token", token, { expires: new Date(Date.now() + 432000000) }); + user.accounts = await user.getAccounts(); + user.keys = await user.getKeys(); + user = pick(user, ...whitelist); + res.send({ user, token }); + } catch (e) { + l.error("login error", e.message); + res.status(401).end(); + } + }) +); + +app.post( "/taboggan", ah(async (req, res) => { try { |
