예제 #1
0
        private RecipientAccessRight?FilterByRecipientAccessRights(ActiveDirectoryAccessRule ace, MultiValuedProperty <RecipientAccessRight> accessRights)
        {
            RecipientAccessRight?recipientAccessRight = RecipientPermissionHelper.GetRecipientAccessRight(ace);

            if (recipientAccessRight == null)
            {
                return(null);
            }
            if (accessRights == null)
            {
                return(recipientAccessRight);
            }
            if (accessRights.Contains(recipientAccessRight.Value))
            {
                return(recipientAccessRight);
            }
            return(null);
        }
예제 #2
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            this.trustee = (ADRecipient)SecurityPrincipalIdParameter.GetSecurityPrincipal((IRecipientSession)base.DataSession, this.Trustee, new Task.TaskErrorLoggingDelegate(base.WriteError), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
            List <ActiveDirectoryAccessRule> list = new List <ActiveDirectoryAccessRule>();

            foreach (RecipientAccessRight right in this.AccessRights)
            {
                list.Add(new ActiveDirectoryAccessRule(((IADSecurityPrincipal)this.trustee).Sid, ActiveDirectoryRights.ExtendedRight, AccessControlType.Allow, RecipientPermissionHelper.GetRecipientAccessRightGuid(right), this.GetInheritanceType(), Guid.Empty));
            }
            this.ApplyModification(list.ToArray());
            TaskLogger.LogExit();
        }
 protected override void ApplyModification(ActiveDirectoryAccessRule[] modifiedAces)
 {
     TaskLogger.LogEnter();
     if (this.trustee != null)
     {
         List <ActiveDirectoryAccessRule> list = new List <ActiveDirectoryAccessRule>();
         foreach (SecurityIdentifier identity in ((IADSecurityPrincipal)this.trustee).SidHistory)
         {
             foreach (RecipientAccessRight right in base.AccessRights)
             {
                 list.Add(new ActiveDirectoryAccessRule(identity, ActiveDirectoryRights.ExtendedRight, AccessControlType.Allow, RecipientPermissionHelper.GetRecipientAccessRightGuid(right), this.GetInheritanceType(), Guid.Empty));
             }
         }
         if (list.Count > 0)
         {
             list.AddRange(modifiedAces);
             modifiedAces = list.ToArray();
         }
     }
     DirectoryCommon.RemoveAces(new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.ErrorLoggerDelegate(base.WriteError), this.DataObject, modifiedAces);
     TaskLogger.LogExit();
 }