janraincapture.js 5.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. // Helper functions for accessing the Janrain Capture API.
  3. var Parse = require('parse/node').Parse;
  4. var querystring = require('querystring');
  5. const httpsRequest = require('./httpsRequest');
  6. // Returns a promise that fulfills iff this user id is valid.
  7. function validateAuthData(authData, options) {
  8. return request(options.janrain_capture_host, authData.access_token).then(data => {
  9. //successful response will have a "stat" (status) of 'ok' and a result node that stores the uuid, because that's all we asked for
  10. //see: https://docs.janrain.com/api/registration/entity/#entity
  11. if (data && data.stat == 'ok' && data.result == authData.id) {
  12. return;
  13. }
  14. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Janrain capture auth is invalid for this user.');
  15. });
  16. }
  17. // Returns a promise that fulfills iff this app id is valid.
  18. function validateAppId() {
  19. //no-op
  20. return Promise.resolve();
  21. }
  22. // A promisey wrapper for api requests
  23. function request(host, access_token) {
  24. var query_string_data = querystring.stringify({
  25. access_token: access_token,
  26. attribute_name: 'uuid' // we only need to pull the uuid for this access token to make sure it matches
  27. });
  28. return httpsRequest.get({
  29. host: host,
  30. path: '/entity?' + query_string_data
  31. });
  32. }
  33. module.exports = {
  34. validateAppId: validateAppId,
  35. validateAuthData: validateAuthData
  36. };
  37. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJxdWVyeXN0cmluZyIsImh0dHBzUmVxdWVzdCIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJyZXF1ZXN0IiwiamFucmFpbl9jYXB0dXJlX2hvc3QiLCJhY2Nlc3NfdG9rZW4iLCJ0aGVuIiwiZGF0YSIsInN0YXQiLCJyZXN1bHQiLCJpZCIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImhvc3QiLCJxdWVyeV9zdHJpbmdfZGF0YSIsInN0cmluZ2lmeSIsImF0dHJpYnV0ZV9uYW1lIiwiZ2V0IiwicGF0aCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9qYW5yYWluY2FwdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIEphbnJhaW4gQ2FwdHVyZSBBUEkuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG52YXIgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuY29uc3QgaHR0cHNSZXF1ZXN0ID0gcmVxdWlyZSgnLi9odHRwc1JlcXVlc3QnKTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gcmVxdWVzdChvcHRpb25zLmphbnJhaW5fY2FwdHVyZV9ob3N0LCBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pLnRoZW4oZGF0YSA9PiB7XG4gICAgLy9zdWNjZXNzZnVsIHJlc3BvbnNlIHdpbGwgaGF2ZSBhIFwic3RhdFwiIChzdGF0dXMpIG9mICdvaycgYW5kIGEgcmVzdWx0IG5vZGUgdGhhdCBzdG9yZXMgdGhlIHV1aWQsIGJlY2F1c2UgdGhhdCdzIGFsbCB3ZSBhc2tlZCBmb3JcbiAgICAvL3NlZTogaHR0cHM6Ly9kb2NzLmphbnJhaW4uY29tL2FwaS9yZWdpc3RyYXRpb24vZW50aXR5LyNlbnRpdHlcbiAgICBpZiAoZGF0YSAmJiBkYXRhLnN0YXQgPT0gJ29rJyAmJiBkYXRhLnJlc3VsdCA9PSBhdXRoRGF0YS5pZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgJ0phbnJhaW4gY2FwdHVyZSBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nXG4gICAgKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgLy9uby1vcFxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgYXBpIHJlcXVlc3RzXG5mdW5jdGlvbiByZXF1ZXN0KGhvc3QsIGFjY2Vzc190b2tlbikge1xuICB2YXIgcXVlcnlfc3RyaW5nX2RhdGEgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkoe1xuICAgIGFjY2Vzc190b2tlbjogYWNjZXNzX3Rva2VuLFxuICAgIGF0dHJpYnV0ZV9uYW1lOiAndXVpZCcsIC8vIHdlIG9ubHkgbmVlZCB0byBwdWxsIHRoZSB1dWlkIGZvciB0aGlzIGFjY2VzcyB0b2tlbiB0byBtYWtlIHN1cmUgaXQgbWF0Y2hlc1xuICB9KTtcblxuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCh7IGhvc3Q6IGhvc3QsIHBhdGg6ICcvZW50aXR5PycgKyBxdWVyeV9zdHJpbmdfZGF0YSB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsSUFBSUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNELEtBQUs7QUFDdkMsSUFBSUUsV0FBVyxHQUFHRCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3hDLE1BQU1FLFlBQVksR0FBR0YsT0FBTyxDQUFDLGdCQUFnQixDQUFDOztBQUU5QztBQUNBLFNBQVNHLGdCQUFnQkEsQ0FBQ0MsUUFBUSxFQUFFQyxPQUFPLEVBQUU7RUFDM0MsT0FBT0MsT0FBTyxDQUFDRCxPQUFPLENBQUNFLG9CQUFvQixFQUFFSCxRQUFRLENBQUNJLFlBQVksQ0FBQyxDQUFDQyxJQUFJLENBQUNDLElBQUksSUFBSTtJQUMvRTtJQUNBO0lBQ0EsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNDLElBQUksSUFBSSxJQUFJLElBQUlELElBQUksQ0FBQ0UsTUFBTSxJQUFJUixRQUFRLENBQUNTLEVBQUUsRUFBRTtNQUMzRDtJQUNGO0lBQ0EsTUFBTSxJQUFJZCxLQUFLLENBQUNlLEtBQUssQ0FDbkJmLEtBQUssQ0FBQ2UsS0FBSyxDQUFDQyxnQkFBZ0IsRUFDNUIsZ0RBQ0YsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0EsU0FBU0MsYUFBYUEsQ0FBQSxFQUFHO0VBQ3ZCO0VBQ0EsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztBQUMxQjs7QUFFQTtBQUNBLFNBQVNaLE9BQU9BLENBQUNhLElBQUksRUFBRVgsWUFBWSxFQUFFO0VBQ25DLElBQUlZLGlCQUFpQixHQUFHbkIsV0FBVyxDQUFDb0IsU0FBUyxDQUFDO0lBQzVDYixZQUFZLEVBQUVBLFlBQVk7SUFDMUJjLGNBQWMsRUFBRSxNQUFNLENBQUU7RUFDMUIsQ0FBQyxDQUFDO0VBRUYsT0FBT3BCLFlBQVksQ0FBQ3FCLEdBQUcsQ0FBQztJQUFFSixJQUFJLEVBQUVBLElBQUk7SUFBRUssSUFBSSxFQUFFLFVBQVUsR0FBR0o7RUFBa0IsQ0FBQyxDQUFDO0FBQy9FO0FBRUFLLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZWLGFBQWEsRUFBRUEsYUFBYTtFQUM1QmIsZ0JBQWdCLEVBQUVBO0FBQ3BCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=