diff --git a/app/app/components/customize/auth-settings.js b/app/app/components/customize/auth-settings.js index 78c59a2b..3a679cf2 100644 --- a/app/app/components/customize/auth-settings.js +++ b/app/app/components/customize/auth-settings.js @@ -35,7 +35,9 @@ export default Ember.Component.extend(NotifierMixin, { publicKey: '', adminUser: '', adminPassword: '', - group: '' + group: '', + disableLogout: false, + defaultPermissionAddSpace: false }, didReceiveAttrs() { @@ -55,6 +57,8 @@ export default Ember.Component.extend(NotifierMixin, { } else { config = JSON.parse(config); config.publicKey = encoding.Base64.decode(config.publicKey); + config.defaultPermissionAddSpace = config.hasOwnProperty('defaultPermissionAddSpace') ? config.defaultPermissionAddSpace : false; + config.disableLogout = config.hasOwnProperty('disableLogout') ? config.disableLogout : true; } this.set('keycloakConfig', config); @@ -113,6 +117,8 @@ export default Ember.Component.extend(NotifierMixin, { config.group = is.undefined(config.group) ? '' : config.group.trim(); config.adminUser = config.adminUser.trim(); config.adminPassword = config.adminPassword.trim(); + config.defaultPermissionAddSpace = config.hasOwnProperty('defaultPermissionAddSpace') ? config.defaultPermissionAddSpace : true; + config.disableLogout = config.hasOwnProperty('disableLogout') ? config.disableLogout : true; if (is.endWith(config.url, '/')) { config.url = config.url.substring(0, config.url.length-1); diff --git a/app/app/components/layout/zone-navigation.js b/app/app/components/layout/zone-navigation.js index e144d573..a734a1d1 100644 --- a/app/app/components/layout/zone-navigation.js +++ b/app/app/components/layout/zone-navigation.js @@ -11,6 +11,7 @@ import Ember from 'ember'; import netUtil from '../../utils/net'; +import constants from '../../utils/constants'; import TooltipMixin from '../../mixins/tooltip'; const { @@ -31,18 +32,25 @@ export default Ember.Component.extend(TooltipMixin, { }, pinned: service(), pins: [], + enableLogout: true, init() { this._super(...arguments); - if (this.get("session.authenticated")) { - this.get("session.session.content.authenticated.user.accounts").forEach((account) => { + if (this.get("session.authenticated") && this.get("session.user.id") !== '0') { + this.get("session.user.accounts").forEach((account) => { // TODO: do not mutate account.active here account.active = account.orgId === this.get("appMeta.orgId"); }); } this.set('pins', this.get('pinned').get('pins')); + + if (this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak) { + let config = this.get('appMeta.authConfig'); + config = JSON.parse(config); + this.set('enableLogout', !config.disableLogout); + } }, didReceiveAttrs() { @@ -88,7 +96,7 @@ export default Ember.Component.extend(TooltipMixin, { if (this.get('session.isAdmin')) { this.addTooltip(document.getElementById("workspace-settings")); } - if (this.get("session.authenticated")) { + if (this.get("session.authenticated") && this.get('enableLogout')) { this.addTooltip(document.getElementById("workspace-logout")); } else { this.addTooltip(document.getElementById("workspace-login")); diff --git a/app/app/templates/components/customize/auth-settings.hbs b/app/app/templates/components/customize/auth-settings.hbs index 26e4cbed..c957f87a 100644 --- a/app/app/templates/components/customize/auth-settings.hbs +++ b/app/app/templates/components/customize/auth-settings.hbs @@ -50,6 +50,22 @@