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));
|