public StringCollection GetPermissions()

in CustomSecuritySample/Authorization.cs [383:439]


      public StringCollection GetPermissions(string userName, IntPtr userToken,
         SecurityItemType itemType, byte[] secDesc)
      {
         StringCollection permissions = new StringCollection();
         if (IsAdmin(userName))
         {
             permissions.AddRange(_fullPermissions.ToArray());
         }
         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(_modelItemOperNames[aclOperation]))
                             permissions.Add(_modelItemOperNames[aclOperation]);
                     }
                     foreach (ModelOperation aclOperation in ace.ModelOperations)
                     {
                         if (!permissions.Contains(_modelOperNames[aclOperation]))
                             permissions.Add(_modelOperNames[aclOperation]);
                     }
                     foreach (CatalogOperation aclOperation in ace.CatalogOperations)
                     {
                         if (!permissions.Contains(_catalogOperationNames[aclOperation]))
                             permissions.Add(_catalogOperationNames[aclOperation]);
                     }
                     foreach (ReportOperation aclOperation in ace.ReportOperations)
                     {
                         if (!permissions.Contains(_reportOperationNames[aclOperation]))
                             permissions.Add(_reportOperationNames[aclOperation]);
                     }
                     foreach (FolderOperation aclOperation in ace.FolderOperations)
                     {
                         if (!permissions.Contains(_folderOperationNames[aclOperation]))
                             permissions.Add(_folderOperationNames[aclOperation]);
                     }
                     foreach (ResourceOperation aclOperation in ace.ResourceOperations)
                     {
                         if (!permissions.Contains(_resourceOperationNames[aclOperation]))
                             permissions.Add(_resourceOperationNames[aclOperation]);
                     }
                     foreach (DatasourceOperation aclOperation in ace.DatasourceOperations)
                     {
                         if (!permissions.Contains(_dataSourceOperationNames[aclOperation]))
                             permissions.Add(_dataSourceOperationNames[aclOperation]);
                     }
                 }
             }
         }

         return permissions;
      }