Avoid own permission groups in traverse group

This commit is contained in:
Meik
2026-07-10 08:46:08 +02:00
parent 2f1ab27ce9
commit 077bac99ae

View File

@@ -571,7 +571,8 @@ namespace C4IT_IAM_SET
var currentTraverseLevel = lvl; var currentTraverseLevel = lvl;
var defaultTraverseLoopIndex = lvl; var defaultTraverseLoopIndex = lvl;
var hasTraverseBoundary = !string.IsNullOrWhiteSpace(GetNormalizedTraverseBoundaryPath()); var hasTraverseBoundary = !string.IsNullOrWhiteSpace(GetNormalizedTraverseBoundaryPath());
var processedNearestTraverseParent = false; var sourcePath = NormalizeDirectoryPath(newDataArea.IAM_Folders[0].technicalName);
var sourcePermissionGroupsAdded = false;
// Überprüfen der Templates // Überprüfen der Templates
if (templates == null) if (templates == null)
@@ -935,9 +936,16 @@ namespace C4IT_IAM_SET
if (parentTraverseGroup != null || !string.IsNullOrWhiteSpace(parentTraverseGroupName)) if (parentTraverseGroup != null || !string.IsNullOrWhiteSpace(parentTraverseGroupName))
{ {
var displayTraverseGroupName = parentTraverseGroup?.Name ?? parentTraverseGroupName; var displayTraverseGroupName = parentTraverseGroup?.Name ?? parentTraverseGroupName;
if (!processedNearestTraverseParent) var isSourceTraversePath = PathsEqual(parent.FullName, sourcePath);
if (!sourcePermissionGroupsAdded)
{ {
DefaultLogger.LogEntry(LogLevels.Debug, "Verarbeite SecurityGroups bei oberster Ebene."); if (isSourceTraversePath)
{
DefaultLogger.LogEntry(LogLevels.Debug, $"Skip direct permission group membership for own Traverse-Gruppe '{displayTraverseGroupName}' on '{parent.FullName}'.");
}
else
{
DefaultLogger.LogEntry(LogLevels.Debug, "Verarbeite SecurityGroups in erster uebergeordneter Traverse-Gruppe.");
foreach (var currentSecGroup in newSecurityGroups.IAM_SecurityGroups) foreach (var currentSecGroup in newSecurityGroups.IAM_SecurityGroups)
{ {
if (currentSecGroup == null) if (currentSecGroup == null)
@@ -962,12 +970,11 @@ namespace C4IT_IAM_SET
if (!TryEnsureGlobalGroupMembershipWithRetry(domainContext, parentTraverseGroup, currentSecGroup)) if (!TryEnsureGlobalGroupMembershipWithRetry(domainContext, parentTraverseGroup, currentSecGroup))
continue; continue;
} }
traverseGroup = parentTraverseGroup;
traverseGroupName = displayTraverseGroupName; sourcePermissionGroupsAdded = true;
processedNearestTraverseParent = true;
} }
else }
{
if (!string.IsNullOrWhiteSpace(traverseGroupName)) if (!string.IsNullOrWhiteSpace(traverseGroupName))
{ {
try try
@@ -992,7 +999,9 @@ namespace C4IT_IAM_SET
continue; continue;
} }
} }
}
traverseGroup = parentTraverseGroup;
traverseGroupName = displayTraverseGroupName;
try try
{ {
if (!WhatIf && parentTraverseGroup != null) if (!WhatIf && parentTraverseGroup != null)