in CustomSecuritySample2016/Authorization.cs [382:479]
public StringCollection GetPermissions(string userName, IntPtr userToken,
SecurityItemType itemType, byte[] secDesc)
{
StringCollection permissions = new StringCollection();
if (0 == String.Compare(userName, m_adminUserName, true,
CultureInfo.CurrentCulture))
{
foreach (CatalogOperation oper in m_CatOperNames.Keys)
{
if (!permissions.Contains((string)m_CatOperNames[oper]))
permissions.Add((string)m_CatOperNames[oper]);
}
foreach(ModelItemOperation oper in m_ModelItemOperNames.Keys)
{
if (!permissions.Contains((string)m_ModelItemOperNames[oper]))
permissions.Add((string)m_ModelItemOperNames[oper]);
}
foreach(ModelOperation oper in m_ModelOperNames.Keys)
{
if (!permissions.Contains((string)m_ModelOperNames[oper]))
permissions.Add((string)m_ModelOperNames[oper]);
}
foreach(CatalogOperation oper in m_CatOperNames.Keys)
{
if (!permissions.Contains((string)m_CatOperNames[oper]))
permissions.Add((string)m_CatOperNames[oper]);
}
foreach(ReportOperation oper in m_RptOperNames.Keys)
{
if (!permissions.Contains((string)m_RptOperNames[oper]))
permissions.Add((string)m_RptOperNames[oper]);
}
foreach(FolderOperation oper in m_FldOperNames.Keys)
{
if (!permissions.Contains((string)m_FldOperNames[oper]))
permissions.Add((string)m_FldOperNames[oper]);
}
foreach(ResourceOperation oper in m_ResOperNames.Keys)
{
if (!permissions.Contains((string)m_ResOperNames[oper]))
permissions.Add((string)m_ResOperNames[oper]);
}
foreach(DatasourceOperation oper in m_DSOperNames.Keys)
{
if (!permissions.Contains((string)m_DSOperNames[oper]))
permissions.Add((string)m_DSOperNames[oper]);
}
}
else
{
AceCollection acl = DeserializeAcl(secDesc);
foreach(AceStruct ace in acl)
{
if (0 == String.Compare(userName, ace.PrincipalName, true,
CultureInfo.CurrentCulture))
{
foreach(ModelItemOperation aclOperation in ace.ModelItemOperations)
{
if (!permissions.Contains((string)m_ModelItemOperNames[aclOperation]))
permissions.Add((string)m_ModelItemOperNames[aclOperation]);
}
foreach(ModelOperation aclOperation in ace.ModelOperations)
{
if (!permissions.Contains((string)m_ModelOperNames[aclOperation]))
permissions.Add((string)m_ModelOperNames[aclOperation]);
}
foreach(CatalogOperation aclOperation in
ace.CatalogOperations)
{
if (!permissions.Contains((string)m_CatOperNames[aclOperation]))
permissions.Add((string)m_CatOperNames[aclOperation]);
}
foreach(ReportOperation aclOperation in ace.ReportOperations)
{
if (!permissions.Contains((string)m_RptOperNames[aclOperation]))
permissions.Add((string)m_RptOperNames[aclOperation]);
}
foreach(FolderOperation aclOperation in ace.FolderOperations)
{
if (!permissions.Contains((string)m_FldOperNames[aclOperation]))
permissions.Add((string)m_FldOperNames[aclOperation]);
}
foreach(ResourceOperation aclOperation in ace.ResourceOperations)
{
if (!permissions.Contains((string)m_ResOperNames[aclOperation]))
permissions.Add((string)m_ResOperNames[aclOperation]);
}
foreach(DatasourceOperation aclOperation in ace.DatasourceOperations)
{
if (!permissions.Contains((string)m_DSOperNames[aclOperation]))
permissions.Add((string)m_DSOperNames[aclOperation]);
}
}
}
}
return permissions;
}