Use configured NTFS ACL permissions
This commit is contained in:
@@ -68,7 +68,10 @@ namespace C4IT.LIAM.Activities
|
||||
|
||||
var dataMain = dataProvider.GetDataList(constFragmentNameConfigProviderMain,
|
||||
"ID, [Expression-ObjectId] as EOID, GCCDomain, GCCTarget, GCCMaxDepth, " +
|
||||
"GCCgroupLDAPFilter, GCCgroupOUPath, GCCPermissionGroupStrategy, GCCtargetType",
|
||||
"GCCgroupLDAPFilter, GCCgroupOUPath, GCCPermissionGroupStrategy, GCCtargetType, " +
|
||||
"OwnerACLPermission.C4IT_EnumValueInt as OwnerACLPermission, " +
|
||||
"WriteACLPermission.C4IT_EnumValueInt as WriteACLPermission, " +
|
||||
"ReadACLPermission.C4IT_EnumValueInt as ReadACLPermission",
|
||||
$"[Expression-ObjectId] = '{configEOID}'");
|
||||
|
||||
Guid ConfigClassId = (Guid)dataMain.First()["ID"];
|
||||
|
||||
@@ -300,7 +300,10 @@ namespace LiamWorkflowActivities
|
||||
GroupFilter = cLIAMHelper.getStringFromObject(dataMain["GCCgroupLDAPFilter"]),
|
||||
GroupPath = cLIAMHelper.getStringFromObject(dataMain["GCCgroupOUPath"]),
|
||||
GroupStrategy = (eLiamGroupStrategies)cLIAMHelper.getIntFromObject(dataMain["GCCPermissionGroupStrategy"]),
|
||||
ProviderType = (eLiamProviderTypes)cLIAMHelper.getIntFromObject(dataMain["GCCtargetType"])
|
||||
ProviderType = (eLiamProviderTypes)cLIAMHelper.getIntFromObject(dataMain["GCCtargetType"]),
|
||||
OwnerACLPermission = GetAclPermissionFromDataRow(dataMain, "OwnerACLPermission", 0x1F01FF),
|
||||
WriteACLPermission = GetAclPermissionFromDataRow(dataMain, "WriteACLPermission", 0x301BF),
|
||||
ReadACLPermission = GetAclPermissionFromDataRow(dataMain, "ReadACLPermission", 0x200A9)
|
||||
};
|
||||
if (dataAdditional != null)
|
||||
{
|
||||
@@ -421,6 +424,34 @@ namespace LiamWorkflowActivities
|
||||
|
||||
}
|
||||
|
||||
private int GetAclPermissionFromDataRow(DataRow row, string columnName, int defaultValue)
|
||||
{
|
||||
if (row == null || string.IsNullOrWhiteSpace(columnName) || !row.Table.Columns.Contains(columnName))
|
||||
return defaultValue;
|
||||
|
||||
var rawValue = cLIAMHelper.getStringFromObject(row[columnName]);
|
||||
if (string.IsNullOrWhiteSpace(rawValue))
|
||||
return defaultValue;
|
||||
|
||||
var value = rawValue.Trim();
|
||||
try
|
||||
{
|
||||
if (value.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
|
||||
return Convert.ToInt32(value.Substring(2), 16);
|
||||
|
||||
if (int.TryParse(value, out var parsedValue))
|
||||
return parsedValue;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogEntry($"Could not parse ACL permission config value '{columnName}'='{rawValue}': {ex.Message}. Falling back to default '{defaultValue}'.", LogLevels.Warning);
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
LogEntry($"Could not parse ACL permission config value '{columnName}'='{rawValue}'. Falling back to default '{defaultValue}'.", LogLevels.Warning);
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public ProviderCacheEntry getDataProvider(Guid ProviderConfigClassID)
|
||||
{
|
||||
var CM = MethodBase.GetCurrentMethod();
|
||||
|
||||
Reference in New Issue
Block a user