protected void PutEachEntryInList() { List <ActiveDirectoryAccessRule> list = null; for (int i = 0; i < this.ModifiedObjects.Count; i++) { if (this.IsEqualEntry(i)) { list = this.ModifiedAcl[i]; break; } } if (list == null) { list = new List <ActiveDirectoryAccessRule>(); this.ModifiedObjects.Add(this.DataObject); this.ModifiedAcl.Add(list); this.ModifyingRecipientSessions.Add(base.DataSession); } AccessControlType allowOrDeny = this.Instance.Deny ? AccessControlType.Deny : AccessControlType.Allow; MailboxRights mailboxRights = (MailboxRights)0; if (this.Instance.AccessRights != null) { foreach (MailboxRights mailboxRights2 in this.Instance.AccessRights) { mailboxRights |= mailboxRights2; } } if (mailboxRights != (MailboxRights)0) { this.UpdateAcl(list, allowOrDeny, mailboxRights); } }
private bool HasRight(MailboxRights right) { foreach (MailboxRights mailboxRights in this.mailboxpermissionspo.AccessRights) { if ((mailboxRights & right) == right) { return(true); } } return(false); }
protected virtual void UpdateAcl(List <ActiveDirectoryAccessRule> modifiedAcl, AccessControlType allowOrDeny, MailboxRights mailboxRights) { TaskLogger.LogEnter(); SecurityIdentifier identity = (this.SecurityPrincipal.MasterAccountSid != null && !this.SecurityPrincipal.MasterAccountSid.IsWellKnown(WellKnownSidType.SelfSid)) ? this.SecurityPrincipal.MasterAccountSid : this.SecurityPrincipal.Sid; modifiedAcl.Add(new ActiveDirectoryAccessRule(identity, (ActiveDirectoryRights)mailboxRights, allowOrDeny, Guid.Empty, this.Instance.InheritanceType, Guid.Empty)); TaskLogger.LogExit(); }
protected override void UpdateAcl(List <ActiveDirectoryAccessRule> modifiedAcl, AccessControlType allowOrDeny, MailboxRights mailboxRights) { TaskLogger.LogEnter(); base.UpdateAcl(modifiedAcl, allowOrDeny, mailboxRights); foreach (SecurityIdentifier identity in base.SecurityPrincipal.SidHistory) { modifiedAcl.Add(new ActiveDirectoryAccessRule(identity, (ActiveDirectoryRights)mailboxRights, allowOrDeny, Guid.Empty, base.Instance.InheritanceType, Guid.Empty)); } TaskLogger.LogExit(); }