Add classified NTFS path template placeholders

This commit is contained in:
Meik
2026-07-16 20:16:03 +02:00
parent c1e26ba615
commit 18a96d3e23
5 changed files with 79 additions and 9 deletions

View File

@@ -62,6 +62,7 @@ namespace C4IT_IAM_SET
public string groupNameSanitizeReplacement = Helper.DefaultGroupNameSanitizeReplacement;
public bool preserveAdGroupNameCase;
public bool WhatIf;
public Func<string, Helper.RootPathTemplateContext> GetTemplateContextForPath;
public int ReadACLPermission = cLiamAclPermissionDefaults.Read;
public int WriteACLPermission = cLiamAclPermissionDefaults.Write;
@@ -331,6 +332,12 @@ namespace C4IT_IAM_SET
};
}
private Helper.RootPathTemplateContext GetEffectiveTemplateContext(string path)
{
return GetTemplateContextForPath?.Invoke(path)
?? Helper.GetRootPathTemplateContext(baseFolder, groupNameSanitizeReplacement);
}
private ResultToken ValidateTraverseBoundaryForCurrentFolder()
{
var resultToken = new ResultToken(System.Reflection.MethodBase.GetCurrentMethod().ToString());
@@ -569,7 +576,8 @@ namespace C4IT_IAM_SET
0,
0,
groupNameSanitizeReplacement,
preserveAdGroupNameCase);
preserveAdGroupNameCase,
GetEffectiveTemplateContext(newDataArea.IAM_Folders[0].technicalName));
var existingGroups = new List<IAM_SecurityGroup>();
foreach (var securityGroup in newSecurityGroups.IAM_SecurityGroups)
@@ -803,7 +811,7 @@ namespace C4IT_IAM_SET
? sanitizedSegments[sanitizedSegments.Length - 1]
: Helper.SanitizePathSegment(Path.GetFileName(parent.FullName.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)), groupNameSanitizeReplacement);
var traverseTags = GetTraverseReplacementTags(parent.FullName, traverseGroupTemplate.Scope);
var rootContext = Helper.GetRootPathTemplateContext(baseFolder, groupNameSanitizeReplacement);
var rootContext = GetEffectiveTemplateContext(parent.FullName);
var boundedTraverseContext = Helper.GetBoundedAdGroupTemplateContext(
traverseGroupTemplate.NamingTemplate,
true,
@@ -1605,7 +1613,8 @@ namespace C4IT_IAM_SET
0,
0,
groupNameSanitizeReplacement,
preserveAdGroupNameCase);
preserveAdGroupNameCase,
GetEffectiveTemplateContext(newDataArea.IAM_Folders[0].technicalName));
List<UserPrincipal> owners = getUserPrincipalBySid(ownerUserSids);
List<UserPrincipal> writers = getUserPrincipalBySid(writerUserSids);
@@ -1771,7 +1780,8 @@ namespace C4IT_IAM_SET
existingADGroupCount,
0,
groupNameSanitizeReplacement,
preserveAdGroupNameCase);
preserveAdGroupNameCase,
GetEffectiveTemplateContext(newDataArea.IAM_Folders[0].technicalName));
/*
if (existingADGroupCount > 0 && !templates.All(t => t.Type == SecurityGroupType.Traverse || Regex.IsMatch(t.NamingTemplate, @"(?<loopTag>{{(?<prefix>[^}]*)(?<loop>LOOP)(?<postfix>[^{]*)}})")))
{