Exemplo n.º 1
0
        private bool IsGroupMemberInMailboxAssociation()
        {
            IExtensibleLogger logger = MailboxAssociationDiagnosticsFrameFactory.Default.CreateLogger(this.groupMailboxToLogon.MailboxInfo.MailboxGuid, this.organizationId);
            IMailboxAssociationPerformanceTracker performanceTracker = MailboxAssociationDiagnosticsFrameFactory.Default.CreatePerformanceTracker(null);
            bool result;

            using (MailboxAssociationDiagnosticsFrameFactory.Default.CreateDiagnosticsFrame("XSO", "CheckMembership", logger, performanceTracker))
            {
                try
                {
                    using (MailboxSession mailboxSession = MailboxSession.OpenAsAdmin(this.groupMailboxToLogon, CultureInfo.InvariantCulture, this.clientInfoString))
                    {
                        using (IAssociationStore associationStore = this.GetAssociationStore(mailboxSession, performanceTracker))
                        {
                            using (IMailboxAssociationUser memberAssociationInformation = this.GetMemberAssociationInformation(associationStore))
                            {
                                result = (memberAssociationInformation != null && (bool)memberAssociationInformation[MailboxAssociationBaseSchema.IsMember]);
                            }
                        }
                    }
                }
                catch (AssociationNotFoundException)
                {
                    GroupMailboxAuthorizationHandler.Tracer.TraceDebug <string, string>((long)this.GetHashCode(), "MemberRetrieval: Unable to make IsMember() check for the user {0} on the mailbox {1}", this.accessingUserInfo.Identity, this.groupMailboxToLogon.MailboxInfo.DisplayName);
                    result = false;
                }
                catch (LocalizedException)
                {
                    GroupMailboxAuthorizationHandler.Tracer.TraceDebug <string, string>((long)this.GetHashCode(), "MemberRetrieval: Unable to make IsMember() check for the user {0} on the mailbox {1}", this.accessingUserInfo.Identity, this.groupMailboxToLogon.MailboxInfo.DisplayName);
                    result = false;
                }
            }
            return(result);
        }
Exemplo n.º 2
0
        protected override void UpdateStoreAssociationSlaveData(MailboxAssociation association, IMailboxAssociationBaseItem item)
        {
            IMailboxAssociationUser mailboxAssociationUser = (IMailboxAssociationUser)item;

            BaseAssociationAdaptor.UpdateLocatorDataInStoreItem(association.User, mailboxAssociationUser);
            mailboxAssociationUser.SyncedIdentityHash = association.Group.IdentityHash;
            mailboxAssociationUser.IsPin = association.IsPin;
        }
Exemplo n.º 3
0
        protected override IMailboxAssociationBaseItem CreateStoreItem(MailboxLocator locator)
        {
            IMailboxAssociationUser mailboxAssociationUser = base.AssociationStore.CreateUserAssociation();

            mailboxAssociationUser[MailboxAssociationBaseSchema.ExternalId]      = (locator.ExternalId ?? string.Empty);
            mailboxAssociationUser[MailboxAssociationBaseSchema.LegacyDN]        = locator.LegacyDn;
            mailboxAssociationUser[MailboxAssociationBaseSchema.SmtpAddress]     = string.Empty;
            mailboxAssociationUser[MailboxAssociationBaseSchema.IsMember]        = false;
            mailboxAssociationUser[MailboxAssociationBaseSchema.ShouldEscalate]  = false;
            mailboxAssociationUser[MailboxAssociationBaseSchema.IsPin]           = false;
            mailboxAssociationUser[MailboxAssociationBaseSchema.JoinDate]        = default(ExDateTime);
            mailboxAssociationUser[MailboxAssociationUserSchema.LastVisitedDate] = default(ExDateTime);
            return(mailboxAssociationUser);
        }
Exemplo n.º 4
0
        protected override void UpdateStoreAssociationMasterData(MailboxAssociation association, IMailboxAssociationBaseItem item)
        {
            IMailboxAssociationUser mailboxAssociationUser = (IMailboxAssociationUser)item;

            BaseAssociationAdaptor.UpdateLocatorDataInStoreItem(association.User, mailboxAssociationUser);
            mailboxAssociationUser.SmtpAddress      = association.UserSmtpAddress;
            mailboxAssociationUser.IsMember         = association.IsMember;
            mailboxAssociationUser.ShouldEscalate   = association.ShouldEscalate;
            mailboxAssociationUser.IsAutoSubscribed = association.IsAutoSubscribed;
            mailboxAssociationUser.JoinedBy         = association.JoinedBy;
            mailboxAssociationUser.JoinDate         = association.JoinDate;
            mailboxAssociationUser.LastVisitedDate  = association.LastVisitedDate;
            if (!association.IsMember && mailboxAssociationUser.IsPin)
            {
                mailboxAssociationUser.IsPin = false;
            }
        }