From 4620cc2b9985266ca3f263252e9a55e45555a3ee Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Mon, 26 Jan 2026 23:48:14 +0100
Subject: [PATCH] fix/crosstable-trustee
---
src/hooks/useFeatureAccess.ts | 9 +++--
.../admin/AdminFeatureInstanceUsersPage.tsx | 36 +++++++++++--------
2 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/src/hooks/useFeatureAccess.ts b/src/hooks/useFeatureAccess.ts
index 9ac69d7..439936c 100644
--- a/src/hooks/useFeatureAccess.ts
+++ b/src/hooks/useFeatureAccess.ts
@@ -420,20 +420,23 @@ export function useFeatureAccess() {
}, []);
/**
- * Update a user's roles in a feature instance
+ * Update a user's roles and active flag in a feature instance
*/
const updateInstanceUserRoles = useCallback(async (
mandateId: string,
instanceId: string,
userId: string,
- roleIds: string[]
+ payload: { roleIds: string[]; enabled?: boolean }
): Promise<{ success: boolean; data?: any; error?: string }> => {
setLoading(true);
setError(null);
try {
+ const body = payload.enabled !== undefined
+ ? { roleIds: payload.roleIds, enabled: payload.enabled }
+ : { roleIds: payload.roleIds };
const response = await api.put(
`/api/features/instances/${instanceId}/users/${userId}/roles`,
- roleIds,
+ body,
{
headers: {
'X-Mandate-Id': mandateId
diff --git a/src/pages/admin/AdminFeatureInstanceUsersPage.tsx b/src/pages/admin/AdminFeatureInstanceUsersPage.tsx
index 34637cd..f33d4c1 100644
--- a/src/pages/admin/AdminFeatureInstanceUsersPage.tsx
+++ b/src/pages/admin/AdminFeatureInstanceUsersPage.tsx
@@ -275,15 +275,23 @@ export const AdminFeatureInstanceUsersPage: React.FC = () => {
];
}, [userOptions, roleOptions]);
- // Form attributes for editing user roles
+ // Form attributes for editing user roles and active flag
const editRolesFields: AttributeDefinition[] = useMemo(() => {
- return [{
- name: 'roleIds',
- label: 'Rollen',
- type: 'multiselect' as const,
- required: true,
- options: roleOptions,
- }];
+ return [
+ {
+ name: 'roleIds',
+ label: 'Rollen',
+ type: 'multiselect' as const,
+ required: true,
+ options: roleOptions,
+ },
+ {
+ name: 'enabled',
+ label: 'Aktiv',
+ type: 'checkbox' as const,
+ required: false,
+ },
+ ];
}, [roleOptions]);
// Handle add user submit
@@ -304,8 +312,8 @@ export const AdminFeatureInstanceUsersPage: React.FC = () => {
}
};
- // Handle edit roles submit
- const handleEditRoles = async (data: { roleIds: string[] }) => {
+ // Handle edit roles and active submit
+ const handleEditRoles = async (data: { roleIds: string[]; enabled?: boolean }) => {
if (!selectedMandateId || !selectedInstanceId || !editingUser) return;
setIsSubmitting(true);
try {
@@ -313,14 +321,14 @@ export const AdminFeatureInstanceUsersPage: React.FC = () => {
selectedMandateId,
selectedInstanceId,
editingUser.userId,
- data.roleIds
+ { roleIds: data.roleIds, enabled: data.enabled }
);
if (result.success) {
setEditingUser(null);
refreshUsers();
- showSuccess('Rollen aktualisiert', 'Die Benutzerrollen wurden erfolgreich aktualisiert.');
+ showSuccess('Eintrag aktualisiert', 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.');
} else {
- showError('Fehler', result.error || 'Fehler beim Aktualisieren der Rollen');
+ showError('Fehler', result.error || 'Fehler beim Aktualisieren');
}
} finally {
setIsSubmitting(false);
@@ -606,7 +614,7 @@ export const AdminFeatureInstanceUsersPage: React.FC = () => {
setEditingUser(null)}