forked from coolaj86/walnut.js
		
	
		
			
				
	
	
		
			114 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(function (exports) {
 | 
						|
  'use strict';
 | 
						|
 | 
						|
  var Oauth3Config;
 | 
						|
  var Oauth3 = (exports.OAUTH3 || require('./oauth3'));
 | 
						|
 | 
						|
  function create(instanceOpts) {
 | 
						|
    var me = {};
 | 
						|
    var storage = instanceOpts.storage;
 | 
						|
 | 
						|
    me.defaults = instanceOpts.defaults;
 | 
						|
    me.libPrefix = instanceOpts.libPrefix;
 | 
						|
 | 
						|
    me.init = function (opts) {
 | 
						|
      console.log('DEBUG Oauth3Config.create.init');
 | 
						|
      console.log(opts);
 | 
						|
 | 
						|
      // TODO get multiple keys at once
 | 
						|
      return Oauth3.PromiseA.all([
 | 
						|
        storage.get('dev.providerUri').then(function (val) {
 | 
						|
          console.log('DEBUG oauth3.init providerUri', val);
 | 
						|
          me.developerMode = true;
 | 
						|
          me.providerUri = val;
 | 
						|
          me.providerUriSet = true;
 | 
						|
 | 
						|
        }, function () {
 | 
						|
          // ignore
 | 
						|
        })
 | 
						|
      , storage.get('dev.apiBaseUri').then(function (val2) {
 | 
						|
          console.log('DEBUG oauth3.init apiBaseUri', val2);
 | 
						|
          me.apiBaseUri = val2;
 | 
						|
          me.apiBaseUriSet = true;
 | 
						|
 | 
						|
        }, function () {
 | 
						|
          // ignore
 | 
						|
        })
 | 
						|
      ]).then(function () {
 | 
						|
        console.log('DEBUG oauth3.init complete');
 | 
						|
 | 
						|
        Object.keys(opts).forEach(function (key) {
 | 
						|
          if ('appSecret' === key) {
 | 
						|
            window.alert("[ERROR] appSecret must never be used in a client (browser, mobile, or desktop)");
 | 
						|
            return;
 | 
						|
          }
 | 
						|
          me[key] = opts[key];
 | 
						|
        });
 | 
						|
 | 
						|
        Object.keys(me.defaults).forEach(function (key) {
 | 
						|
          if ('undefined' === typeof me[key]) {
 | 
						|
            me[key] = me.defaults[key];
 | 
						|
          }
 | 
						|
        });
 | 
						|
 | 
						|
        if (!me.appId) {
 | 
						|
          if (me.clientUri || me.clientAgreeTos) {
 | 
						|
            if (!(me.clientUri && me.clientAgreeTos)) {
 | 
						|
              console.error("Please set `DaplieApiConfig.clientUri` and `DaplieApiConfig.clientAgreeTos`, try these:");
 | 
						|
              console.log("    oauth3.org");
 | 
						|
              console.log("    oauth3.org/tos/draft");
 | 
						|
              window.alert("[ERROR] `DaplieApiConfig.clientUri` and `DaplieApiConfig.clientAgreeTos` not set."
 | 
						|
                + "\nTest with 'oauth3.org' 'oauth3.org/tos/draft'");
 | 
						|
            }
 | 
						|
          }
 | 
						|
          else {
 | 
						|
            console.error("Please set `DaplieApiConfig.appId`, try this:");
 | 
						|
            console.log("    TEST_ID_xxxxxxxxxxxxxxxxxxxxxxxx");
 | 
						|
            console.log("    (NOT YET IMPLEMENTED)");
 | 
						|
            window.alert("[ERROR] `DaplieApiConfig.appId` not set.\nTest with 'TEST_ID_xxxxxxxxxxxxxxxxxxxxxxxx'");
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        console.log('');
 | 
						|
        if (!me.providerUriSet) {
 | 
						|
          console.info("Why, hello there Fellow Developer! Would you like to test against the beta server?");
 | 
						|
          console.log("    " + me.libPrefix + "Daplie.storage.set('dev.providerUri', 'https://betapool.com')");
 | 
						|
          console.log("    " + me.libPrefix + "Daplie.storage.set('dev.apiBaseUri', 'https://betapool.io')");
 | 
						|
          console.log('');
 | 
						|
        }
 | 
						|
        if (me.providerUriSet || me.apiBaseUriSet) {
 | 
						|
          console.info("You're in Developer Mode! :-)");
 | 
						|
          console.log("    UI:  " + me.providerUri);
 | 
						|
          console.log("    API: " + me.apiBaseUri);
 | 
						|
          console.log('');
 | 
						|
 | 
						|
          console.log("Want to switch back to production mode?");
 | 
						|
          console.log("    " + me.libPrefix + "Daplie.storage.remove('dev.providerUri'); "
 | 
						|
            + me.libPrefix + "Daplie.storage.remove('dev.apiBaseUri');");
 | 
						|
          console.log('');
 | 
						|
        }
 | 
						|
      }).then(function () {
 | 
						|
        // Note: it is possible for this to fail (i.e. when offline or providerUri is bad).
 | 
						|
        // Note: for development you can pass in opts.directives (in the format of oauth3.json)
 | 
						|
        console.log('DEBUG oauth3 discover start');
 | 
						|
        return Oauth3.discover(me.providerUri, opts).then(function () {
 | 
						|
          console.log('DEBUG oauth3 discover end');
 | 
						|
          console.log(me);
 | 
						|
          return me;
 | 
						|
        });
 | 
						|
      });
 | 
						|
    };
 | 
						|
 | 
						|
    return me;
 | 
						|
  }
 | 
						|
 | 
						|
  Oauth3Config = {
 | 
						|
    create: create
 | 
						|
  };
 | 
						|
  exports.Oauth3Config = Oauth3Config.Oauth3Config = Oauth3Config;
 | 
						|
 | 
						|
  if ('undefined' !== typeof module) {
 | 
						|
    module.exports = Oauth3Config;
 | 
						|
  }
 | 
						|
}('undefined' !== typeof exports ? exports : window));
 |