From bcb984fb5dea6a3271a21f1374d265be0cf36840 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 16 Aug 2022 09:39:15 +0200 Subject: [PATCH] fix: load settings only if spaces capability enabled (quickfix) --- .../src/services/auth/userManager.ts | 81 ++++++++++++------- packages/web-runtime/src/store/settings.js | 19 ----- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/packages/web-runtime/src/services/auth/userManager.ts b/packages/web-runtime/src/services/auth/userManager.ts index 9f2ef11297f..d8da9a6d3e9 100644 --- a/packages/web-runtime/src/services/auth/userManager.ts +++ b/packages/web-runtime/src/services/auth/userManager.ts @@ -168,37 +168,14 @@ export class UserManager extends OidcUserManager { accessToken ) graphUser = await graphClient.users.getMe() - const { - data: { bundles: roles } - } = await axios.post( - '/api/v0/settings/roles-list', - {}, - { - headers: { - authorization: `Bearer ${accessToken}` - } - } - ) - + const [roles, settings] = await Promise.all([ + this.fetchRoles({ accessToken }), + this.fetchSettings() + ]) this.store.commit('SET_ROLES', roles) + this.store.commit('SET_SETTINGS_VALUES', settings) - const userAssignmentResponse = await axios.post( - '/api/v0/settings/assignments-list', - { - account_uuid: graphUser.data.id - }, - { - headers: { - authorization: `Bearer ${accessToken}` - } - } - ) - const assignments = userAssignmentResponse.data?.assignments - const roleAssignment = assignments.find((assignment) => 'roleId' in assignment) - - if (roleAssignment) { - role = roles.find((role) => role.id === roleAssignment.roleId) - } + role = await this.fetchRole({ graphUser, accessToken, roles }) } const [user, userGroups] = await Promise.all([ await this.clientService.owncloudSdk.users.getUser(login.id), @@ -218,8 +195,52 @@ export class UserManager extends OidcUserManager { if (!this.store.getters.capabilities.spaces?.enabled && user.quota) { this.store.commit('SET_QUOTA', user.quota) } + } - await this.store.dispatch('loadSettingsValues') + private async fetchRoles({ accessToken = '' }): Promise { + try { + const { + data: { bundles: roles } + } = await axios.post( + '/api/v0/settings/roles-list', + {}, + { + headers: { + authorization: `Bearer ${accessToken}` + } + } + ) + return roles + } catch (e) { + console.error(e) + return [] + } + } + + private async fetchSettings(): Promise { + try { + return await this.clientService.owncloudSdk.settings.getSettingsValues() + } catch (e) { + console.error(e) + return null + } + } + + private async fetchRole({ graphUser, accessToken, roles }): Promise { + const userAssignmentResponse = await axios.post( + '/api/v0/settings/assignments-list', + { + account_uuid: graphUser.data.id + }, + { + headers: { + authorization: `Bearer ${accessToken}` + } + } + ) + const assignments = userAssignmentResponse.data?.assignments + const roleAssignment = assignments.find((assignment) => 'roleId' in assignment) + return roleAssignment ? roles.find((role) => role.id === roleAssignment.roleId) : null } private async fetchCapabilities({ accessToken = '' }): Promise { diff --git a/packages/web-runtime/src/store/settings.js b/packages/web-runtime/src/store/settings.js index 12d27f86040..f1506bd1f6c 100644 --- a/packages/web-runtime/src/store/settings.js +++ b/packages/web-runtime/src/store/settings.js @@ -11,25 +11,6 @@ const state = { const actions = { clearSettingsValues({ commit }) { commit('SET_SETTINGS_VALUES', null) - }, - - async loadSettingsValues({ commit, state, dispatch }) { - const oldSettingsValues = state.settingsValues - commit('SET_SETTINGS_VALUES', null) - try { - const values = await this._vm.$client.settings.getSettingsValues() - commit('SET_SETTINGS_VALUES', values) - } catch (error) { - commit('SET_SETTINGS_VALUES', oldSettingsValues) - dispatch('showMessage', { - title: 'Failed to load settings values.', - desc: error.response.statusText, - status: 'danger', - autoClose: { - enabled: true - } - }) - } } }