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); }
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(); }