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 bf57678753..aea5a50a5a 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 @@ -38,8 +38,12 @@ /> -
{{ $gettext('Login') }}
-
{{ loginDisplayValue }}
+ + +
{{ $gettext('Quota') }}
@@ -73,8 +77,9 @@ import { computed, defineComponent, PropType } from 'vue' import UserInfoBox from './UserInfoBox.vue' import { AppRole, User } from '@opencloud-eu/web-client/graph/generated' -import { formatFileSize } from '@opencloud-eu/web-pkg' +import { formatFileSize, useCapabilityStore } from '@opencloud-eu/web-pkg' import { useGettext } from 'vue3-gettext' +import { storeToRefs } from 'pinia' export default defineComponent({ name: 'DetailsPanel', @@ -98,12 +103,14 @@ export default defineComponent({ }, setup() { const language = useGettext() - const currentLanguage = computed(() => { - return language.current - }) + const currentLanguage = computed(() => language.current) + + const capabilityStore = useCapabilityStore() + const { graphUsersEditLoginAllowedDisabled } = storeToRefs(capabilityStore) return { - currentLanguage + currentLanguage, + graphUsersEditLoginAllowedDisabled } }, computed: { 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 c11d9a7213..8159e7920b 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 @@ -63,7 +63,7 @@ />
-
+
= ref() const formData = ref({ displayName: { @@ -298,6 +298,7 @@ export default defineComponent({ maxQuota: capabilityRefs.spacesMaxQuota, isInputFieldReadOnly, isLoginInputDisabled, + graphUsersEditLoginAllowedDisabled, editUser, formData, groupOptions, 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 7cb8fb0090..aae98f9750 100644 --- a/packages/web-app-admin-settings/src/components/Users/UsersList.vue +++ b/packages/web-app-admin-settings/src/components/Users/UsersList.vue @@ -148,6 +148,7 @@ import { findIndex } from 'lodash-es' import Mark from 'mark.js' import { OcTable } from '@opencloud-eu/design-system/components' import { FieldType } from '@opencloud-eu/design-system/helpers' +import { useCapabilityStore } from '@opencloud-eu/web-pkg' export default defineComponent({ name: 'UsersList', @@ -174,7 +175,8 @@ export default defineComponent({ const lastSelectedUserIndex = ref(0) const lastSelectedUserId = ref(null) - + const capabilityStore = useCapabilityStore() + const { graphUsersEditLoginAllowedDisabled } = storeToRefs(capabilityStore) const userSettingsStore = useUserSettingsStore() const { users, selectedUsers } = storeToRefs(userSettingsStore) @@ -337,7 +339,7 @@ export default defineComponent({ ) const fields = computed(() => { - return [ + const cols: FieldType[] = [ { name: 'select', title: '', @@ -372,21 +374,27 @@ export default defineComponent({ title: $gettext('Role'), type: 'slot', sortable: true - }, - { + } + ] + + if (!graphUsersEditLoginAllowedDisabled.value) { + cols.push({ name: 'accountEnabled', title: $gettext('Login'), type: 'slot', sortable: true - }, - { - name: 'actions', - title: $gettext('Actions'), - sortable: false, - type: 'slot', - alignH: 'right' - } - ] + }) + } + + cols.push({ + name: 'actions', + title: $gettext('Actions'), + sortable: false, + type: 'slot', + alignH: 'right' + }) + + return cols }) const markInstance = ref(null) diff --git a/packages/web-app-admin-settings/src/views/Users.vue b/packages/web-app-admin-settings/src/views/Users.vue index 7e24d78fe0..16c6ccc19c 100644 --- a/packages/web-app-admin-settings/src/views/Users.vue +++ b/packages/web-app-admin-settings/src/views/Users.vue @@ -183,6 +183,7 @@ export default defineComponent({ const route = useRoute() const capabilityStore = useCapabilityStore() const capabilityRefs = storeToRefs(capabilityStore) + const { graphUsersEditLoginAllowedDisabled } = storeToRefs(capabilityStore) const clientService = useClientService() const configStore = useConfigStore() @@ -393,7 +394,7 @@ export default defineComponent({ ...unref(editQuotaActions), ...unref(addToGroupsActions), ...unref(removeFromGroupsActions), - ...unref(editLoginActions) + ...(!graphUsersEditLoginAllowedDisabled.value ? unref(editLoginActions) : []) ].filter((item) => item.isVisible({ resources: unref(selectedUsers) })) }) diff --git a/packages/web-client/src/ocs/capabilities.ts b/packages/web-client/src/ocs/capabilities.ts index 57408cbef9..627d121f4a 100644 --- a/packages/web-client/src/ocs/capabilities.ts +++ b/packages/web-client/src/ocs/capabilities.ts @@ -172,6 +172,7 @@ export interface Capabilities { create_disabled?: boolean delete_disabled?: boolean read_only_attributes?: string[] + edit_login_allowed_disabled?: boolean } } } diff --git a/packages/web-pkg/src/composables/piniaStores/capabilities.ts b/packages/web-pkg/src/composables/piniaStores/capabilities.ts index e639d372f5..524d033275 100644 --- a/packages/web-pkg/src/composables/piniaStores/capabilities.ts +++ b/packages/web-pkg/src/composables/piniaStores/capabilities.ts @@ -44,7 +44,8 @@ const defaultValues = { change_password_self_disabled: true, create_disabled: false, delete_disabled: false, - read_only_attributes: [] as string[] + read_only_attributes: [] as string[], + edit_login_allowed_disabled: false } }, notifications: { @@ -92,6 +93,9 @@ export const useCapabilityStore = defineStore('capabilities', () => { const graphUsersReadOnlyAttributes = computed( () => unref(capabilities).graph.users.read_only_attributes ) + const graphUsersEditLoginAllowedDisabled = computed( + () => unref(capabilities).graph.users.edit_login_allowed_disabled + ) const filesAppProviders = computed(() => unref(capabilities).files.app_providers) const filesFavorites = computed(() => unref(capabilities).files.favorites) @@ -155,6 +159,7 @@ export const useCapabilityStore = defineStore('capabilities', () => { graphUsersCreateDisabled, graphUsersDeleteDisabled, graphUsersChangeSelfPasswordDisabled, + graphUsersEditLoginAllowedDisabled, graphUsersReadOnlyAttributes, filesAppProviders, filesFavorites,