Avoid own permission groups in traverse group
This commit is contained in:
@@ -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,64 +936,72 @@ 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)
|
||||||
foreach (var currentSecGroup in newSecurityGroups.IAM_SecurityGroups)
|
|
||||||
{
|
{
|
||||||
if (currentSecGroup == null)
|
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)
|
||||||
{
|
{
|
||||||
DefaultLogger.LogEntry(LogLevels.Error, "currentSecGroup ist null.");
|
if (currentSecGroup == null)
|
||||||
continue;
|
{
|
||||||
}
|
DefaultLogger.LogEntry(LogLevels.Error, "currentSecGroup ist null.");
|
||||||
if (currentSecGroup.Scope != GroupScope.Global)
|
continue;
|
||||||
continue;
|
}
|
||||||
if (IsSameGroupName(currentSecGroup.Name, displayTraverseGroupName))
|
if (currentSecGroup.Scope != GroupScope.Global)
|
||||||
{
|
continue;
|
||||||
DefaultLogger.LogEntry(LogLevels.Debug, $"Skip self membership for Traverse-Gruppe '{displayTraverseGroupName}'.");
|
if (IsSameGroupName(currentSecGroup.Name, displayTraverseGroupName))
|
||||||
continue;
|
{
|
||||||
|
DefaultLogger.LogEntry(LogLevels.Debug, $"Skip self membership for Traverse-Gruppe '{displayTraverseGroupName}'.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WhatIf)
|
||||||
|
{
|
||||||
|
resultToken.warnings.Add($"Traverse-Gruppe '{displayTraverseGroupName}' würde Mitglied '{currentSecGroup.Name}' erhalten.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TryEnsureGlobalGroupMembershipWithRetry(domainContext, parentTraverseGroup, currentSecGroup))
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WhatIf)
|
sourcePermissionGroupsAdded = true;
|
||||||
{
|
}
|
||||||
resultToken.warnings.Add($"Traverse-Gruppe '{displayTraverseGroupName}' würde Mitglied '{currentSecGroup.Name}' erhalten.");
|
}
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!TryEnsureGlobalGroupMembershipWithRetry(domainContext, parentTraverseGroup, currentSecGroup))
|
if (!string.IsNullOrWhiteSpace(traverseGroupName))
|
||||||
continue;
|
|
||||||
}
|
|
||||||
traverseGroup = parentTraverseGroup;
|
|
||||||
traverseGroupName = displayTraverseGroupName;
|
|
||||||
processedNearestTraverseParent = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(traverseGroupName))
|
try
|
||||||
{
|
{
|
||||||
try
|
if (IsSameGroupName(displayTraverseGroupName, traverseGroupName))
|
||||||
{
|
{
|
||||||
if (IsSameGroupName(displayTraverseGroupName, traverseGroupName))
|
DefaultLogger.LogEntry(LogLevels.Debug, $"Skip nested self membership for Traverse-Gruppe '{displayTraverseGroupName}'.");
|
||||||
{
|
|
||||||
DefaultLogger.LogEntry(LogLevels.Debug, $"Skip nested self membership for Traverse-Gruppe '{displayTraverseGroupName}'.");
|
|
||||||
}
|
|
||||||
else if (WhatIf)
|
|
||||||
{
|
|
||||||
resultToken.warnings.Add($"Traverse-Gruppe '{displayTraverseGroupName}' würde verschachtelte Gruppe '{traverseGroupName}' erhalten.");
|
|
||||||
}
|
|
||||||
else if (traverseGroup != null && parentTraverseGroup != null && !parentTraverseGroup.Members.Contains(traverseGroup))
|
|
||||||
{
|
|
||||||
if (!TryEnsureNestedTraverseGroupMembershipWithRetry(parentTraverseGroup, traverseGroup))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else if (WhatIf)
|
||||||
{
|
{
|
||||||
DefaultLogger.LogEntry(LogLevels.Error, $"Fehler beim Hinzufügen der Traverse-Gruppe: {ex.Message}");
|
resultToken.warnings.Add($"Traverse-Gruppe '{displayTraverseGroupName}' würde verschachtelte Gruppe '{traverseGroupName}' erhalten.");
|
||||||
continue;
|
}
|
||||||
|
else if (traverseGroup != null && parentTraverseGroup != null && !parentTraverseGroup.Members.Contains(traverseGroup))
|
||||||
|
{
|
||||||
|
if (!TryEnsureNestedTraverseGroupMembershipWithRetry(parentTraverseGroup, traverseGroup))
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
DefaultLogger.LogEntry(LogLevels.Error, $"Fehler beim Hinzufügen der Traverse-Gruppe: {ex.Message}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
traverseGroup = parentTraverseGroup;
|
||||||
|
traverseGroupName = displayTraverseGroupName;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!WhatIf && parentTraverseGroup != null)
|
if (!WhatIf && parentTraverseGroup != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user