diff --git a/changelog/unreleased/enhancement-admin-settings-users-role-graph-api-usage b/changelog/unreleased/enhancement-admin-settings-users-role-graph-api-usage new file mode 100644 index 00000000000..7bbbce2d5e7 --- /dev/null +++ b/changelog/unreleased/enhancement-admin-settings-users-role-graph-api-usage @@ -0,0 +1,6 @@ +Enhancement: Admin settings users section uses graph api for role assignments + +We've switched over to utilizing user role assignments data from the graph api instead of the custom settings api. +Especially for the list view this leads to improved performance. + +https://github.com/owncloud/web/pull/8261 diff --git a/packages/web-app-admin-settings/src/components/Users/SideBar/DetailsPanel.vue b/packages/web-app-admin-settings/src/components/Users/SideBar/DetailsPanel.vue index fae247a054c..1730f9fe3a8 100644 --- a/packages/web-app-admin-settings/src/components/Users/SideBar/DetailsPanel.vue +++ b/packages/web-app-admin-settings/src/components/Users/SideBar/DetailsPanel.vue @@ -31,7 +31,7 @@ - + @@ -57,6 +57,10 @@ export default defineComponent({ users: { type: Array, required: true + }, + roles: { + type: Array, + required: true } }, computed: { @@ -70,6 +74,13 @@ export default defineComponent({ return this.$gettextInterpolate('%{count} users selected', { count: this.users.length }) + }, + roleDisplayName() { + const assignedRole = this.user.appRoleAssignments[0] + + return this.$gettext( + this.roles.find((role) => role.id === assignedRole.appRoleId)?.displayName || '' + ) } } }) diff --git a/packages/web-app-admin-settings/src/components/Users/SideBar/EditPanel.vue b/packages/web-app-admin-settings/src/components/Users/SideBar/EditPanel.vue index f3a629c5780..d2b48c63845 100644 --- a/packages/web-app-admin-settings/src/components/Users/SideBar/EditPanel.vue +++ b/packages/web-app-admin-settings/src/components/Users/SideBar/EditPanel.vue @@ -21,21 +21,27 @@ @change="validateEmail" />
+ @update:modelValue="onUpdateRole" + > + +
@@ -124,6 +130,11 @@ export default defineComponent({ return { editUser, formData, groupOptions } }, computed: { + translatedRoleOptions() { + return this.roles.map((role) => { + return { ...role, displayName: this.$gettext(role.displayName) } + }) + }, invalidFormData() { return Object.values(this.formData) .map((v) => !!v.valid) @@ -134,12 +145,18 @@ export default defineComponent({ }, compareSaveDialogOriginalObject() { return cloneDeep({ ...this.user, passwordProfile: { password: '' } }) + }, + selectedRoleName() { + return this.$gettext( + this.roles.find((role) => role.id === this.editUser.appRoleAssignments[0].appRoleId) + .displayName + ) } }, watch: { user: { handler: function () { - this.editUser = cloneDeep({ ...this.user, passwordProfile: { password: '' } }) + this.editUser = cloneDeep(this.user) }, deep: true, immediate: true @@ -182,6 +199,14 @@ export default defineComponent({ formDataValue.valid = true formDataValue.errorMessage = '' }) + }, + onUpdateRole(role) { + this.editUser.appRoleAssignments[0].appRoleId = role.id + }, + onUpdatePassword(password) { + this.editUser.passwordProfile = { + password + } } } }) diff --git a/packages/web-app-admin-settings/src/components/Users/UsersList.vue b/packages/web-app-admin-settings/src/components/Users/UsersList.vue index e17a835f109..4f8cd4a93ef 100644 --- a/packages/web-app-admin-settings/src/components/Users/UsersList.vue +++ b/packages/web-app-admin-settings/src/components/Users/UsersList.vue @@ -44,7 +44,7 @@