From d42919285b866dfd4fc4e0d9ba2078ea75e669c5 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Mon, 2 Feb 2026 12:25:09 +0100 Subject: [PATCH] Add user filter for roles and invited status --- dashboard/src/views/UsersView.vue | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dashboard/src/views/UsersView.vue b/dashboard/src/views/UsersView.vue index ffc8fa154..66104604d 100644 --- a/dashboard/src/views/UsersView.vue +++ b/dashboard/src/views/UsersView.vue @@ -99,9 +99,17 @@ const external2FA = ref(false); const profile = ref({}); const busy = ref(true); const filterOptions = ref([ - { id: 'all', name: 'All Users' }, - { id: 'active', name: 'Active Users' }, - { id: 'inactive', name: 'Inactive Users' } + { id: 'all', name: 'All' }, + { separator: true, name: 'State' }, + { id: 'active', name: 'Active' }, + { id: 'inactive', name: 'Inactive' }, + { id: 'invited', name: 'Invited' }, + { separator: true, name: 'Roles' }, + { id: ROLES.USER, name: t('users.role.user') }, + { id: ROLES.USER_MANAGER, name: t('users.role.usermanager') }, + { id: ROLES.MAIL_MANAGER, name: t('users.role.mailmanager') }, + { id: ROLES.ADMIN, name: t('users.role.admin') }, + { id: ROLES.OWNER, name: t('users.role.owner') }, ]); const users = ref([]); const usersById = ref({}); @@ -125,9 +133,13 @@ const filteredUsers = computed(() => { return username.indexOf(search.value) !== -1 || u.email.indexOf(search.value) !== -1 || u.displayName.indexOf(search.value) !== -1; }).filter(u => { if (filter.value === 'active') { - return u.active; + return u.active && (u.inviteAccepted || u.source); } else if (filter.value === 'inactive') { return !u.active; + } else if (filter.value === 'invited') { + return !u.inviteAccepted && !u.source; + } else if (filter.value === ROLES.USER || filter.value === ROLES.USER_MANAGER || filter.value === ROLES.MAIL_MANAGER || filter.value === ROLES.ADMIN || filter.value === ROLES.OWNER) { + return u.role === filter.value; } else { return true; }