Skip to content

Instantly share code, notes, and snippets.

@marcelpanse
Last active April 30, 2016 22:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcelpanse/540e2a89240fd73232bf2840ca4e01ee to your computer and use it in GitHub Desktop.
Save marcelpanse/540e2a89240fd73232bf2840ca4e01ee to your computer and use it in GitHub Desktop.
var request = require("request");
var readJSON = require("read-json");
var writeFile = require("write");
var googleIdToken = require("google-id-token");
function getGoogleCerts(kid, callback) {
console.log("Checking cache for google certs");
readJSON("/tmp/certs.json", function(error, cert){
if (error) {
console.log("Cert not found, downloading from google");
request({uri: "https://www.googleapis.com/oauth2/v1/certs"},
function (err, response, body) {
if (err && response.statusCode !== 200) {
console.log(err || "error while retrieving the google certs");
callback(err, {});
} else {
console.log("Writing certs to disk");
writeFile("/tmp/certs.json", body, function(err) {
if (err) {
console.log("Error writing cert to disk", err);
}
});
var keys = JSON.parse(body);
callback(null, keys[kid]);
}
});
} else {
console.log("Using cert found on disk");
callback(null, cert[kid]);
}
});
}
exports.getUserByGoogleToken = function (token, accountId, callback) {
var parser = new googleIdToken({getKeys: getGoogleCerts});
parser.decode(token, function(err, token) {
if (err) {
console.log("error while parsing the google token: " + err);
callback("Can't parse googleToken");
} else {
console.log("Checking for account with email", token.data.email);
//check if email and accountId match in dynamoDB
callback(null, /* user object from db */);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment