Exemplo n.º 1
0
        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());
     }
 }