UNPKG

oidc-lib

Version:

A library for creating OIDC Service Providers

155 lines (128 loc) 7.4 kB
function claimer_app_boot(newModuleName, newModule){ var defaultModuleViews = { 'viewCollection': {"\\claimer_sts\\views\\claimer_sts_client_identity_error":"PGgyPk9wZW5JZENvbm5lY3QgY2xpZW50IGNvbm5lY3Rpb24gZXJyb3I8L2gyPg0KPGg0PkVycm9yOiB7e3tlcnJvcn19fTwvaDQ-DQo8aDQ-RXJyb3IgZGV0YWlsOiB7e3tlcnJvcl9kZXNjcmlwdGlvbn19fTwvaDQ-DQo","\\claimer_sts\\views\\claimer_sts_error_response":"PGRpdiBpZD0ic3VibWl0ZGl2IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCjxmb3JtIGlkPSJjbGFpbWVyX3N0c19lcnJvcl9yZXNwb25zZSIgYWN0aW9uPSJ7e3tyZWRpcmVjdF91cml9fX0iIG1ldGhvZD0icG9zdCI-DQogICAgICA8ZmllbGRzZXQ-DQogICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVycm9yIiBuYW1lPSJlcnJvciIgdmFsdWU9Int7e2Vycm9yfX19IiAvPg0KICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJlcnJvcl9kZXNjcmlwdGlvbiIgbmFtZT0iZXJyb3JfZGVzY3JpcHRpb24iIHZhbHVlPSJ7e3tlcnJvcl9kZXNjcmlwdGlvbn19fSIgLz4NCiAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhdGUiIG5hbWU9InN0YXRlIiB2YWx1ZT0ie3t7c3RhdGV9fX0iIC8-DQogICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiAvPg0KICAgICAgPC9maWVsZHNldD4NCjwvZm9ybT4NCjwvZGl2Pg0KPHNjcmlwdD4NCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpew0KICBkb2N1bWVudC5mb3Jtc1snY2xhaW1lcl9zdHNfZXJyb3JfcmVzcG9uc2UnXS5zdWJtaXQoKTsNCn0NCjwvc2NyaXB0Pg","\\claimer_sts\\views\\claimer_sts_implicit_redirect":"PGRpdiBpZD0ic3VibWl0ZGl2IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCjxmb3JtIGlkPSJjbGFpbWVyX3N0c19hdXRoX3Jlc3BvbnNlIiBhY3Rpb249Int7e3JlZGlyZWN0X3VyaX19fSIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgIDxmaWVsZHNldD4NCiAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icGF5bG9hZCIgbmFtZT0icGF5bG9hZCIgLz4NCiAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVkaXJlY3RfdXJpIiBuYW1lPSJyZWRpcmVjdF91cmkiIC8-DQogICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiAvPg0KICAgICAgPC9maWVsZHNldD4NCjwvZm9ybT4NCjwvZGl2Pg0KDQo8c2NyaXB0Pg0Kd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7DQogIC8vIEZpcnN0LCBwYXJzZSB0aGUgcXVlcnkgc3RyaW5nDQogIHZhciBwYXJhbXMgPSB7fSwgcG9zdEJvZHkgPSBsb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSwNCiAgICAgIHJlZ2V4ID0gLyhbXiY9XSspPShbXiZdKikvZywgbTsNCiAgd2hpbGUgKG0gPSByZWdleC5leGVjKHBvc3RCb2R5KSkgew0KICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQobVsxXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KG1bMl0pOw0KICB9DQogIHZhciBwYXJhbXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMpOw0KICB2YXIgcGFyYW1zYjY0ID0gYnRvYShwYXJhbXNTdHJpbmcpOw0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGF5bG9hZCcpLnZhbHVlID0gcGFyYW1zYjY0Ow0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVkaXJlY3RfdXJpJykudmFsdWUgPSAne3t7cmVkaXJlY3RfdXJpfX19JzsNCiAgZG9jdW1lbnQuZm9ybXNbJ2NsYWltZXJfc3RzX2F1dGhfcmVzcG9uc2UnXS5zdWJtaXQoKTsNCn0NCjwvc2NyaXB0Pg0K","\\claimer_content\\wallet\\views\\claimer_sts_client_identity_error":"PGgyPkEgd2ViIHNpdGUgaGFzIGNvbm5lY3RlZCB1c2luZyB0aGUgd3JvbmcgY3JlZGVudGlhbHM8L2gyPg0KPGg0PkVycm9yOiB7e3tlcnJvcn19fTwvaDQ-DQo8aDQ-RXJyb3IgZGV0YWlsOiB7e3tlcnJvcl9kZXNjcmlwdGlvbn19fTwvaDQ-DQo","\\claimer_content\\wallet\\views\\error_received":"PGRpdiBjbGFzcz0iY29udGFpbmVyIiBzdHlsZT0ianVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4NCgk8aDM-e3tjb21wb25lbnR9fSBlcnJvciByZWNlaXZlZDwvaDM-DQoJPGJyLz4NCgk8YnIvPg0KCTxoNT5FcnJvcjoge3tlcnJvcn19PC9oNT4NCgk8aDU-RGV0YWlsOiB7e2Vycm9yX2Rlc2NyaXB0aW9ufX08L2g1Pg0KPC9kaXY-DQo"}, 'scripts': {} } console.log('[Main] Registering Service Worker'); navigator.serviceWorker.register('/wallet/service-worker.js', {scope: '/wallet/'}) .then(reg => { // reg is a serviceWorkerRegistration object console.log('[Main] Service Worker Registration Succeeded'); // Handler for messages coming from the service worker }, err => { console.log('[Main] Service Worker Registration failed', err); }); navigator.serviceWorker.addEventListener('message', function(event){ var action = event.data.action; switch(action){ case 'install': if (startupInvoked){ console.log('[Main] Ignoring INSTALL message from ServiceWorker because startup begun.'); } else{ console.log('[Main] Received INSTALL message from Service Worker and invoking startup.') startup(); } break; case 'managerNotification': case 'masterNotification': var retVal = masterNotification(event.data); break; } }); function send_message_to_serviceWorker(msg){ var safeMsg = pk.base64url.encode(JSON.stringify(msg)); return new Promise(function(resolve, reject){ if (navigator.serviceWorker.controller === null){ reject('serviceworker-not-ready'); } else{ // Create a Message Channel var msg_chan = new MessageChannel(); // Handler for recieving message reply from service worker msg_chan.port1.onmessage = function(event){ if(event.data.error){ reject(event.data.error); }else{ resolve(JSON.parse(pk.base64url.decode(event.data))); } }; // Send message to service worker along with port for reply navigator.serviceWorker.controller.postMessage(safeMsg, [msg_chan.port2]); } }); } pk.util.send_message_to_serviceWorker = send_message_to_serviceWorker; const clientlib = window.claimerClientLib; var startupInvoked = false; var frameworkModules = { token: pk.token, key_management: pk.key_management, serialize64: pk.serialize64 } frameworkModules[newModuleName] = newModule; var db_modules = { indexed_db: pk.indexed_db_module.indexed_db_provider, hub: pk.hub_module.hub_provider } pk.dbs = {}; var dbScaffold = {}; for (var contentModuleName in pk.util.config.content_modules){ if (pk.util.config.content_modules[contentModuleName].db !== undefined){ var db_info = pk.util.config.content_modules[contentModuleName].db; if (db_info['provider'] === undefined){ continue; } if (db_modules[db_info.provider] === undefined){ console.error("*** Error: contentModule " + contentModuleName + ' should have "required(' + db_info['provider'] + ')"'); } else{ dbScaffold[contentModuleName] = new db_modules[db_info.provider](); } } } if (pk.util.config.sts.httpsServerUrl !== undefined){ var httpsServerUrl = pk.util.url(pk.util.config.sts.httpsServerUrl); } startup(); function startup(method, uri){ pk.app.entryPointUrlFunction = newModule.entryPointUrlFunction; initializeAllDataBases(dbScaffold) .then(function(){ for (var fmod in frameworkModules){ frameworkModules[fmod].registerEndpoints(pk); } if (newModule.views_module){ pk.app.module_views = newModule.module_views; } else{ pk.app.module_views = defaultModuleViews; } pk.app.invokeEntryPoint(); }, function(err){ console.error('Error initializing databases: ', err); }); } //////////////////////// General Framework Functions ///////////////////////////////// function initializeAllDataBases(dbScaffod){ var promises = []; return new Promise((resolve, reject) => { for (var cmName in dbScaffold){ var provider = dbScaffold[cmName]; if (provider !== undefined){ var promise = provider.initialize(pk, cmName, provider); promises.push(promise); } } Promise.all(promises).then(function(data){ for (var i=0; i < data.length; i++){ var dbInfo = data[i]; pk.dbs[dbInfo.contentModuleName] = dbInfo; } resolve(true); }, function(err){ reject("error with initializeDatabase promises: " + err); }); }); } }