new features

This commit is contained in:
Matthias Hochmeister
2026-03-23 17:54:19 +01:00
parent 4c323748fd
commit 97c9af7f14
5 changed files with 40 additions and 9 deletions

View File

@@ -262,7 +262,7 @@ class PermissionService {
async setMultipleGroupPermissions(
updates: { group: string; permissions: string[] }[],
grantedBy: string,
): Promise<void> {
): Promise<{ droppedPermissions: string[] }> {
const client = await pool.connect();
try {
await client.query('BEGIN');
@@ -282,8 +282,18 @@ class PermissionService {
validSet = new Set(validResult.rows.map((r: any) => r.id));
}
const allDropped: string[] = [];
for (const { group, permissions } of updates) {
const validPermIds = permissions.filter(p => validSet.has(p));
const droppedPermIds = permissions.filter(p => !validSet.has(p));
if (droppedPermIds.length > 0) {
logger.warn('Permissions dropped during save — not found in permissions table', {
group,
droppedPermIds,
});
allDropped.push(...droppedPermIds);
}
await client.query('DELETE FROM group_permissions WHERE authentik_group = $1', [group]);
@@ -307,6 +317,8 @@ class PermissionService {
groupCount: updates.length,
grantedBy,
});
return { droppedPermissions: [...new Set(allDropped)] };
} catch (error) {
await client.query('ROLLBACK');
throw error;