]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(settings): Hide forbidden UI elements for line managers
authorFerdinand Thiessen <opensource@fthiessen.de>
Wed, 28 Aug 2024 19:56:25 +0000 (21:56 +0200)
committerFerdinand Thiessen <opensource@fthiessen.de>
Fri, 30 Aug 2024 19:32:03 +0000 (21:32 +0200)
1. The "recent" accounts API only works for admin and delegated admin -> hide for line managers
2. Line managers can not create new groups -> Hide the UI to add a new group for them
3. Accounts created by line managers require one of the groups, which is managed by the line manager, assigned.
   So if the line manager only manageres a single group, we should preselect that group.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
apps/settings/src/components/UserList.vue
apps/settings/src/views/UserManagementNavigation.vue

index b417043a270a8b465a8b6fefc6f207ebf4cd91ae..228ead554e288f489ef94c059a0c6cef29d8a3d1 100644 (file)
@@ -357,7 +357,16 @@ export default {
                },
 
                setNewUserDefaultGroup(value) {
-                       if (value && value.length > 0) {
+                       // Is no value set, but user is a line manager we set their group as this is a requirement for line manager
+                       if (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {
+                               // if there are multiple groups we do not know which to add,
+                               // so we cannot make the managers life easier by preselecting it.
+                               if (this.groups.length === 1) {
+                                       value = this.groups[0].id
+                               }
+                       }
+
+                       if (value) {
                                // setting new account default group to the current selected one
                                const currentGroup = this.groups.find(group => group.id === value)
                                if (currentGroup) {
index 93569e7d29a664a2b90eb991b8c59388665de5ad..47ecf87758951cbe479e30c837597e33d8698934 100644 (file)
@@ -30,7 +30,7 @@
                                </template>
                        </NcAppNavigationItem>
 
-                       <NcAppNavigationItem v-if="isAdmin"
+                       <NcAppNavigationItem v-if="settings.isAdmin"
                                id="admin"
                                :exact="true"
                                :name="t('settings', 'Admins')"
@@ -46,7 +46,8 @@
                                </template>
                        </NcAppNavigationItem>
 
-                       <NcAppNavigationItem id="recent"
+                       <NcAppNavigationItem v-if="isAdminOrDelegatedAdmin"
+                               id="recent"
                                :exact="true"
                                :name="t('settings', 'Recently active')"
                                :to="{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }">
@@ -54,7 +55,7 @@
                                        <NcIconSvgWrapper :path="mdiHistory" />
                                </template>
                                <template #counter>
-                                       <NcCounterBubble v-if="recentGroup?.usercount > 0"
+                                       <NcCounterBubble v-if="recentGroup?.usercount"
                                                :type="selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined">
                                                {{ recentGroup.usercount }}
                                        </NcCounterBubble>
                        force-menu
                        is-heading
                        :open.sync="isAddGroupOpen">
-                       <template #actionsTriggerIcon>
+                       <template v-if="isAdminOrDelegatedAdmin" #actionsTriggerIcon>
                                <NcLoadingIcon v-if="loadingAddGroup" />
                                <NcIconSvgWrapper v-else :path="mdiPlus" />
                        </template>
-                       <template #actions>
+                       <template v-if="isAdminOrDelegatedAdmin" #actions>
                                <NcActionText>
                                        <template #icon>
                                                <AccountGroup :size="20" />
@@ -171,8 +172,10 @@ const userCount = computed(() => store.getters.getUserCount)
 const groups = computed(() => store.getters.getSortedGroups)
 const { adminGroup, recentGroup, disabledGroup, userGroups } = useFormatGroups(groups)
 
-/** True if the current user is an administrator */
-const isAdmin = computed(() => store.getters.getServerData.isAdmin)
+/** Server settings for current user */
+const settings = computed(() => store.getters.getServerData)
+/** True if the current user is a (delegated) admin */
+const isAdminOrDelegatedAdmin = computed(() => settings.value.isAdmin || settings.value.isDelegatedAdmin)
 
 /** True if the 'add-group' dialog is open - needed to be able to close it when the group is created */
 const isAddGroupOpen = ref(false)