diff --git a/ui/desktop/app/initializers/origin.js b/ui/desktop/app/initializers/origin.js new file mode 100644 index 000000000..0a3abfc39 --- /dev/null +++ b/ui/desktop/app/initializers/origin.js @@ -0,0 +1,30 @@ +import { getOwner } from '@ember/application'; + +export function initialize(registry) { + + // Lookup the application route + const ApplicationRoute = registry.resolveRegistration + ? registry.resolveRegistration('route:application') + : registry.resolve('route:application'); + + ApplicationRoute.reopen({ + init() { + this._super(...arguments); + const originalBeforeModel = this.beforeModel; + + // Override the beforeModel hook and initialize the origin + this.beforeModel = async function() { + const origin = getOwner(this).lookup('service:origin'); + return origin.updateOrigin().then( + () => originalBeforeModel.apply(this, arguments), + () => originalBeforeModel.apply(this, arguments) + ); + }; + }, + }); +} + +export default { + after: 'ember-simple-auth', + initialize +}; diff --git a/ui/desktop/app/routes/index.js b/ui/desktop/app/routes/index.js index 18b3bd24f..200135491 100644 --- a/ui/desktop/app/routes/index.js +++ b/ui/desktop/app/routes/index.js @@ -4,7 +4,7 @@ import { inject as service } from '@ember/service'; export default class IndexRoute extends Route { // =services - @service session; + @service origin; // =methods @@ -12,7 +12,7 @@ export default class IndexRoute extends Route { * If no origin is specified yet, redirects to origin, otherwise scopes. */ redirect() { - const rendererOrigin = this.session.data.origin; + const rendererOrigin = this.origin.rendererOrigin; if (!rendererOrigin) { this.replaceWith('origin'); } else { diff --git a/ui/desktop/app/services/origin.js b/ui/desktop/app/services/origin.js index 5fe141900..3e397240d 100644 --- a/ui/desktop/app/services/origin.js +++ b/ui/desktop/app/services/origin.js @@ -8,7 +8,7 @@ export default class OriginService extends Service { @service ipc; @service store; - @service session; + @service storage; // =attributes @@ -23,14 +23,14 @@ export default class OriginService extends Service { * @type {?string} */ get rendererOrigin() { - return this.session.data.origin; + return this.storage.getItem('origin'); } /** * @param {?string} origin */ set rendererOrigin(origin) { - this.session.set('data.origin', origin); + this.storage.setItem('origin', origin); } /** diff --git a/ui/desktop/config/environment.js b/ui/desktop/config/environment.js index e4b94e3fc..3d7c0c1b6 100644 --- a/ui/desktop/config/environment.js +++ b/ui/desktop/config/environment.js @@ -2,7 +2,7 @@ const APP_NAME = process.env.APP_NAME || 'Boundary'; const API_HOST = process.env.API_HOST || ''; -const ENABLE_MIRAGE = process.env.API_HOST ? false : true; +const ENABLE_MIRAGE = process.env.ENABLE_MIRAGE ? false : true; module.exports = function (environment) { let ENV = { @@ -70,6 +70,11 @@ module.exports = function (environment) { // Notification timeout should be 0 for fast tests ENV.notifyTimeout = 0; + + // Use in-memory storage + ENV.storage = { + memory: true + }; } if (environment === 'production') { diff --git a/ui/desktop/tests/acceptance/authentication-test.js b/ui/desktop/tests/acceptance/authentication-test.js index 96c1258fc..703ca0ce9 100644 --- a/ui/desktop/tests/acceptance/authentication-test.js +++ b/ui/desktop/tests/acceptance/authentication-test.js @@ -62,9 +62,9 @@ module('Acceptance | authentication', function (hooks) { }; const setDefaultOrigin = (test) => { - const origin = window.location.origin; - const session = test.owner.lookup('service:session'); - session.set('data.origin', origin); + const windowOrigin = window.location.origin; + const origin = test.owner.lookup('service:origin'); + origin.rendererOrigin = windowOrigin; }; hooks.beforeEach(function () { diff --git a/ui/desktop/tests/acceptance/projects-test.js b/ui/desktop/tests/acceptance/projects-test.js index a973db904..b3298cca9 100644 --- a/ui/desktop/tests/acceptance/projects-test.js +++ b/ui/desktop/tests/acceptance/projects-test.js @@ -60,9 +60,9 @@ module('Acceptance | projects', function (hooks) { }; const setDefaultOrigin = (test) => { - const origin = window.location.origin; - const session = test.owner.lookup('service:session'); - session.set('data.origin', origin); + const windowOrigin = window.location.origin; + const origin = test.owner.lookup('service:origin'); + origin.rendererOrigin = windowOrigin; }; hooks.beforeEach(function () { @@ -102,7 +102,7 @@ module('Acceptance | projects', function (hooks) { urls.authenticate.global = `${urls.scopes.global}/authenticate`; urls.authenticate.methods.global = `${urls.authenticate.global}/${instances.authMethods.global.id}`; urls.projects = `${urls.scopes.org}/projects`; - + class MockIPC { origin = null; diff --git a/ui/desktop/tests/acceptance/targets-test.js b/ui/desktop/tests/acceptance/targets-test.js index 6f7cd30e4..968b677d1 100644 --- a/ui/desktop/tests/acceptance/targets-test.js +++ b/ui/desktop/tests/acceptance/targets-test.js @@ -61,9 +61,9 @@ module('Acceptance | targets', function (hooks) { }; const setDefaultOrigin = (test) => { - const origin = window.location.origin; - const session = test.owner.lookup('service:session'); - session.set('data.origin', origin); + const windowOrigin = window.location.origin; + const origin = test.owner.lookup('service:origin'); + origin.rendererOrigin = windowOrigin; }; hooks.beforeEach(function () { @@ -104,7 +104,7 @@ module('Acceptance | targets', function (hooks) { urls.authenticate.methods.global = `${urls.authenticate.global}/${instances.authMethods.global.id}`; urls.projects = `${urls.scopes.org}/projects`; urls.targets = `${urls.projects}/targets`; - + class MockIPC { origin = null;