예제 #1
0
 private void AddPermissionEntriesForAddOrModify(MapiAclTableAdapter mapiAclTableAdapter)
 {
     foreach (Permission permission in this.permissions.Values)
     {
         byte[] array = null;
         if (permission.Origin == PermissionOrigin.New)
         {
             if (permission.Principal.Type == PermissionSecurityPrincipal.SecurityPrincipalType.ADRecipientPrincipal)
             {
                 ParticipantEntryId participantEntryId = ParticipantEntryId.FromParticipant(new Participant(permission.Principal.ADRecipient), ParticipantEntryIdConsumer.SupportsADParticipantEntryId);
                 array = participantEntryId.ToByteArray();
             }
             else if (permission.Principal.Type == PermissionSecurityPrincipal.SecurityPrincipalType.ExternalUserPrincipal)
             {
                 ExternalUser externalUser = permission.Principal.ExternalUser;
                 byte[]       array2       = new byte[externalUser.Sid.BinaryLength];
                 externalUser.Sid.GetBinaryForm(array2, 0);
                 array = MapiStore.GetAddressBookEntryIdFromLocalDirectorySID(array2);
             }
             if (array != null)
             {
                 mapiAclTableAdapter.AddPermissionEntry(array, permission.MemberRights);
             }
         }
         else if (permission.IsDirty)
         {
             mapiAclTableAdapter.ModifyPermissionEntry(permission.MemberId, permission.MemberRights);
         }
     }
     if (this.anonymousMemberPermission != null && this.anonymousMemberPermission.IsDirty)
     {
         mapiAclTableAdapter.ModifyPermissionEntry(this.anonymousMemberPermission.MemberId, this.anonymousMemberPermission.MemberRights);
     }
     if (this.defaultMemberPermission != null && this.defaultMemberPermission.IsDirty)
     {
         mapiAclTableAdapter.ModifyPermissionEntry(this.defaultMemberPermission.MemberId, this.defaultMemberPermission.MemberRights);
     }
 }