Skip to content

Commit

Permalink
added roster
Browse files Browse the repository at this point in the history
  • Loading branch information
ronan18 committed Apr 25, 2020
1 parent 882d294 commit f16b2c1
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
2 changes: 2 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var mailingListRouter = require('./routes/mailinglist');
var applyRouter = require('./routes/apply');
var applicationsRouter = require('./routes/applications');
var adminAuthRouter = require('./routes/adminAuth');
var adminRosterRouter = require('./routes/roster');
var statusRouter = require('./routes/status');

var app = express();
Expand All @@ -29,6 +30,7 @@ app.use('/api/v1/mailinglist', mailingListRouter);
app.use('/api/v1/apply', applyRouter);
app.use('/api/v1/admin/applications', applicationsRouter);
app.use('/api/v1/admin/auth', adminAuthRouter);
app.use('/api/v1/admin/roster', adminRosterRouter);
app.use('/api/v1/status', statusRouter);
/*
// catch 404 and forward to error handler
Expand Down
88 changes: 88 additions & 0 deletions routes/roster.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
var express = require('express');
var router = express.Router();
const emailValidator = require("email-validator");
const fetch = require('node-fetch');
const keys = require("../private/keys")
const sengridEndpoint = "https://api.sendgrid.com"
const sengridAuthorization = `Bearer ${keys.sendgrid}`
var admin = require('firebase-admin');
const moment = require('moment-timezone')

/* /api/v1/apply*/
const MongoClient = require('mongodb').MongoClient;

const client = new MongoClient(keys.mongo, {useNewUrlParser: true});
client.connect(err => {
console.log(err)
const db = client.db("hyphen-hacks")

function bytes(s) {
return ~-encodeURI(s).split(/%..|./).length
}

function jsonSize(s) {
return bytes(JSON.stringify(s))
}

let verifyEmail = async (email) => {
console.log(email, 'email')
if (email.endsWith("hyphen-hacks.com")) {
return email.endsWith("hyphen-hacks.com")
} else {
let authEmailed = await db.collection("authorizedEmails").find({email: email}).toArray()
return authEmailed.length >= 1
}
}
/* /api/v1/admin/roster */

router.get("/", (req, res) => {
let origin = req.get('origin')
console.log("request", origin, req.body)
if (keys.whitelistedHosts.indexOf(origin) > -1) {
admin.auth().verifyIdToken(req.headers.authorization)
.then(async function (decodedToken) {
let uid = decodedToken.uid;
admin.auth().getUser(uid)
.then(async function (userRecord) {
// See the UserRecord reference doc for the contents of userRecord.

let email = userRecord.toJSON().email
if (await verifyEmail(email) === true) {
try {
let applications = await db.collection("people").find().toArray()
res.status(200)
res.send({roster: applications})
res.end()
} catch (err) {
console.log(err)
res.status(500)
res.send({error: "internal server error"})
res.end()
}
} else {
res.status(401)
res.send({error: "not authorized"})
res.end()
}


})


}).catch(function (error) {
console.log(error)
res.status(401)
res.send({error: "authorizing"})
res.end()
});

} else {
res.status(401)
res.send({error: "unsecure request"})
res.end()
}
})
})


module.exports = router;

0 comments on commit f16b2c1

Please sign in to comment.