aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRan Guin <[email protected]>2021-05-11 18:47:48 -0700
committerRan Guin <[email protected]>2021-05-11 18:47:48 -0700
commit3b6114a5d67fe50d53b75da8bb9037f6a976c1bb (patch)
tree0e3539acc5b134f9561d1c231f8e552f47bca7b4
parent0b0994f4795759c7ddc08203522d8488bb4a5646 (diff)
downloadcoinos-server-3b6114a5d67fe50d53b75da8bb9037f6a976c1bb.tar.gz
coinos-server-3b6114a5d67fe50d53b75da8bb9037f6a976c1bb.zip
add referrals routes
-rw-r--r--routes/referrals.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/routes/referrals.js b/routes/referrals.js
new file mode 100644
index 00000000..d0252466
--- /dev/null
+++ b/routes/referrals.js
@@ -0,0 +1,86 @@
+var express = require('express');
+var router = express.Router();
+var debug = require('debug')('referral')
+
+const { v4: uuidv4 } = require('uuid')
+const config = require('./../config')
+
+router.get('/', function(req, res, next) {
+ res.send('list of referrals...');
+});
+
+router.get(
+ "/grant",
+ ah(async (req, res) => {
+ const {sponsor_id, expiry} = req.query
+
+ var token = uuidv4()
+ debug('generated token: ' + token + ' sponsored by ' + sponsor_id)
+
+ var ref = await db.Referrals.create({
+ sponsor_id: sponsor_id,
+ token: token,
+ status: 'pending'
+ })
+
+ debug('generated referral: ' + JSON.stringify(ref))
+ return res.send(token)
+ })
+);
+
+router.get(
+ "/verify/:user_id/:token",
+ ah(async (req, res) => {
+ const { user_id, token } = req.params;
+
+ debug('verify token: ' + token)
+
+ const found = await db.Referral.findAll({
+ attributes: ['status'],
+ where: {
+ token: token,
+ user_id: null
+ }
+ })
+
+ if (found && found.length) {
+ debug('found referral: ' + JSON.stringify(found))
+ if (found[0].status === 'pending') {
+
+ await db.Referral.update(
+ {
+ status: 'active',
+ user_id: user_id,
+ updated_at: new Date().toISOString().substring(0,10)
+ },
+ {
+ where: { token: token }
+ }
+ )
+
+ return res.send({ verified: true });
+ } else {
+ res.status(500).send({ verified: false, message: 'Referral already ' + found[0].status })
+ }
+ } else {
+ res.status(500).send('Invalid referral token')
+ }
+ })
+);
+
+router.post(
+ "/joinQueue",
+ ah(async (req, res) => {
+ const { email, sms } = req.query;
+
+ debug('email: ' + email)
+
+ const added = db.WaitingList.create({
+ email: email
+ })
+
+ res.send({message: 'Added to waiting list'})
+ })
+);
+
+module.exports = router;