internal Permission AddEntry(PermissionSecurityPrincipal securityPrincipal, MemberRights memberRights) { this.CheckValid(); EnumValidator.ThrowIfInvalid <MemberRights>(memberRights, "memberRights"); if (securityPrincipal == null) { throw new ArgumentNullException("securityPrincipal"); } if (string.IsNullOrEmpty(securityPrincipal.IndexString)) { throw new ArgumentException("SecurityPrincipal must at least have a valid index string.", "securityPrincipal"); } if (securityPrincipal.Type == PermissionSecurityPrincipal.SecurityPrincipalType.ADRecipientPrincipal && !PermissionTable.isCrossPremiseDelegateAllowedForMailboxOwner) { ADRecipient adrecipient = securityPrincipal.ADRecipient; if (!ADRecipient.IsValidRecipient(adrecipient, !this.isPublicFolder)) { throw new ArgumentException("Cannot use " + adrecipient.DisplayName + " as security principal", "securityPrincipal"); } } Permission permission = null; if (!this.permissions.ContainsKey(securityPrincipal.IndexString)) { if (this.removedPermissions.TryGetValue(securityPrincipal.IndexString, out permission)) { this.removedPermissions.Remove(securityPrincipal.IndexString); permission.MemberRights = memberRights; } else { permission = this.PermissionSet.CreatePermission(securityPrincipal, memberRights); } } this.AddPermissionEntry(securityPrincipal, permission); return(permission); }
protected override void ValidateMailboxFolderUserId(MailboxFolderUserId mailboxFolderUserId) { base.ValidateMailboxFolderUserId(mailboxFolderUserId); if (mailboxFolderUserId.UserType == MailboxFolderUserId.MailboxFolderUserType.Internal && !ADRecipient.IsValidRecipient(mailboxFolderUserId.ADRecipient, !this.IsPublicFolderIdentity)) { throw new InvalidInternalUserIdException(base.User.ToString()); } if (mailboxFolderUserId.UserType == MailboxFolderUserId.MailboxFolderUserType.Unknown) { throw new InvalidExternalUserIdException(base.User.ToString()); } }