new features
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user