diff --git a/README.md b/README.md index 0aa7e11a..3de2787c 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ v0.44.0 ## Tech stack -- EmberJS (v2.11.2) +- EmberJS (v2.12.0) - Go (v1.8) - MySQL (v5.7.10+) or Percona (v5.7.16-10+) @@ -38,7 +38,6 @@ Documize is compatible with Auth0 identity as a service. [](https://auth0.com/?utm_source=oss&utm_medium=gp&utm_campaign=oss) - Open Source Identity and Access Management ## Word Conversion to HTML diff --git a/app/app/authenticators/documize.js b/app/app/authenticators/documize.js index 153d6a6b..24714b3b 100644 --- a/app/app/authenticators/documize.js +++ b/app/app/authenticators/documize.js @@ -23,6 +23,7 @@ const { export default Base.extend({ ajax: service(), appMeta: service(), + localStorage: service(), restore(data) { // TODO: verify authentication data @@ -57,6 +58,7 @@ export default Base.extend({ }, invalidate() { + this.get('localStorage').clearAll(); return resolve(); } }); \ No newline at end of file diff --git a/app/app/authenticators/keycloak.js b/app/app/authenticators/keycloak.js index cbf2f00d..0a26ac7a 100644 --- a/app/app/authenticators/keycloak.js +++ b/app/app/authenticators/keycloak.js @@ -22,6 +22,8 @@ const { export default Base.extend({ ajax: service(), appMeta: service(), + kcAuth: service(), + localStorage: service(), restore(data) { // TODO: verify authentication data @@ -46,6 +48,7 @@ export default Base.extend({ }, invalidate() { - return resolve(); + this.get('localStorage').clearAll(); + return this.get('kcAuth').logout(); } }); \ No newline at end of file diff --git a/app/app/components/auth-settings.js b/app/app/components/auth-settings.js index 3703cf5c..62a5d176 100644 --- a/app/app/components/auth-settings.js +++ b/app/app/components/auth-settings.js @@ -18,9 +18,9 @@ const { } = Ember; export default Ember.Component.extend({ + appMeta: Ember.inject.service(), isDocumizeProvider: computed.equal('authProvider', constants.AuthProvider.Documize), isKeycloakProvider: computed.equal('authProvider', constants.AuthProvider.Keycloak), - KeycloakUrlError: computed.empty('keycloakConfig.url'), KeycloakRealmError: computed.empty('keycloakConfig.realm'), KeycloakClientIdError: computed.empty('keycloakConfig.clientId'), diff --git a/app/app/pods/auth/keycloak/route.js b/app/app/pods/auth/keycloak/route.js index 0a6fe961..baab93d0 100644 --- a/app/app/pods/auth/keycloak/route.js +++ b/app/app/pods/auth/keycloak/route.js @@ -25,11 +25,7 @@ export default Ember.Route.extend({ beforeModel(transition) { this.set('mode', is.not.undefined(transition.queryParams.mode) ? transition.queryParams.mode : 'login'); - - let authProvider = this.get('appMeta.authProvider'); - let authConfig = this.get('appMeta.authConfig'); - - if (authProvider !== constants.AuthProvider.Keycloak) { + if (this.get('appMeta.authProvider') !== constants.AuthProvider.Keycloak) { return; } @@ -37,12 +33,12 @@ export default Ember.Route.extend({ return; } - this.get('kcAuth').boot(JSON.parse(authConfig)).then((kc) => { + this.get('kcAuth').boot().then((kc) => { if (!kc.authenticated) { this.get('kcAuth').login().then(() => { }, (reject) => { this.get('localStorage').storeSessionItem('kc-error', reject); - this.transitionTo('auth.keycloak', { queryParams: { mode: 'reject' }}); + this.set('mode', 'reject'); }); } @@ -53,16 +49,16 @@ export default Ember.Route.extend({ this.transitionTo('folders'); }, (reject) => { this.get('localStorage').storeSessionItem('kc-error', reject); - this.transitionTo('auth.keycloak', { queryParams: { mode: 'reject' }}); + this.set('mode', 'reject'); }); }, (reject) => { this.get('localStorage').storeSessionItem('kc-error', reject); - this.transitionTo('auth.keycloak', { queryParams: { mode: 'reject' }}); + this.set('mode', 'reject'); }); }, (reject) => { this.get('localStorage').storeSessionItem('kc-error', reject); - this.transitionTo('auth.keycloak', { queryParams: { mode: 'reject' }}); + this.set('mode', 'reject'); }); }, diff --git a/app/app/pods/auth/login/route.js b/app/app/pods/auth/login/route.js index 73a165e8..8401b4a4 100644 --- a/app/app/pods/auth/login/route.js +++ b/app/app/pods/auth/login/route.js @@ -20,13 +20,12 @@ export default Ember.Route.extend({ beforeModel(/*transition*/) { let authProvider = this.get('appMeta.authProvider'); - let authConfig = this.get('appMeta.authConfig'); switch (authProvider) { case constants.AuthProvider.Keycloak: this.set('showLogin', false); - this.get('kcAuth').boot(JSON.parse(authConfig)).then(() => { + this.get('kcAuth').boot().then(() => { this.get('kcAuth').login().then(() => { }, (reject) => { this.get('localStorage').storeSessionItem('kc-error', reject); diff --git a/app/app/pods/auth/logout/route.js b/app/app/pods/auth/logout/route.js index cf293ecb..88b12d8c 100644 --- a/app/app/pods/auth/logout/route.js +++ b/app/app/pods/auth/logout/route.js @@ -17,18 +17,19 @@ export default Ember.Route.extend({ appMeta: Ember.inject.service(), activate: function () { - this.get('session').invalidate(); - this.audit.record("logged-in"); + this.audit.record("logged-out"); this.audit.stop(); - if (config.environment === 'test') { - this.transitionTo('auth.login'); - } else { - if (this.get("appMeta.allowAnonymousAccess")) { - this.transitionTo('folders'); - } else { + this.get('session').invalidate().then(() => { + if (config.environment === 'test') { this.transitionTo('auth.login'); + } else { + if (this.get("appMeta.allowAnonymousAccess")) { + this.transitionTo('folders'); + } else { + this.transitionTo('auth.login'); + } } - } + }); } }); diff --git a/app/app/pods/auth/logout/template.hbs b/app/app/pods/auth/logout/template.hbs index c24cd689..fc1ac6c2 100644 --- a/app/app/pods/auth/logout/template.hbs +++ b/app/app/pods/auth/logout/template.hbs @@ -1 +1,4 @@ -{{outlet}} +
Logging out...
+