internal UserIdentityLookupService(Configuration configuration, AddinManagementService addinManagementService)
        {
            UserIdentityMappings    userIdentityMappingsConfig = configuration.SessionGroup.UserIdentityMappings;
            MigrationSourcesElement migrationSourcesConfig     = configuration.SessionGroup.MigrationSources;

            m_mappingAlgorithmPool = new UserIdMappingAlgorithmPool(configuration.SessionGroup.UserIdentityMappings,
                                                                    configuration.SessionGroup.Sessions.Session);
            m_lookupConfiguration = new UserIdLookupConfiguration(configuration.SessionGroup.UserIdentityMappings.EnableValidation,
                                                                  configuration.SessionGroup.MigrationSources);

            m_serviceIsConfigured = (userIdentityMappingsConfig.UserMappings.Count != 0 ||
                                     userIdentityMappingsConfig.DisplayNameMappings.Count != 0 ||
                                     userIdentityMappingsConfig.AliasMappings.Count != 0 ||
                                     userIdentityMappingsConfig.DomainMappings.Count != 0
                                     );

            m_addinManagementService = addinManagementService;

            foreach (AddinElement addinElem in configuration.Addins.Addin)
            {
                Guid   addinRefName = new Guid(addinElem.ReferenceName);
                IAddin addin        = m_addinManagementService.GetAddin(addinRefName);
                if (null != addin)
                {
                    var userLookupProvider = addin.GetService(typeof(IUserIdentityLookupServiceProvider)) as IUserIdentityLookupServiceProvider;
                    if (null != userLookupProvider)
                    {
                        this.RegisterLookupServiceProvider(addin.ReferenceName, userLookupProvider);
                    }
                }
            }
        }
示例#2
0
        public UserIdLookupConfiguration(
            bool userIdLookupEnabled,
            MigrationSourcesElement migrationSourcesConfig)
        {
            m_lookupIsEnabled = userIdLookupEnabled;

            // configuration needed for static user id mapping
            foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource)
            {
                Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId);

                UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName;
                m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName;
            }

            if (m_lookupIsEnabled)
            {
                // configuration needed for runtime lookup

                // Dictionary<MigrationSourceId, Dictionary<AddinRefName, List<Addins>>>
                Dictionary <Guid, Dictionary <Guid, LookupAddin> > configuredAddins = new Dictionary <Guid, Dictionary <Guid, LookupAddin> >();

                foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource)
                {
                    Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId);

                    if (!configuredAddins.ContainsKey(migrationSourceId))
                    {
                        configuredAddins.Add(migrationSourceId, new Dictionary <Guid, LookupAddin>());
                    }

                    foreach (LookupAddin addin in migrSrcConfig.Settings.UserIdentityLookup.LookupAddin)
                    {
                        if (configuredAddins[migrationSourceId].ContainsKey(addin.ReferenceNameGuid))
                        {
                            configuredAddins[migrationSourceId].Add(addin.ReferenceNameGuid, addin);
                        }
                    }

                    UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName;
                    m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName;
                }

                foreach (var addins in configuredAddins)
                {
                    LookupAddin[] perMigrSrcAddins = addins.Value.Values.ToArray();
                    Array.Sort(perMigrSrcAddins, new LookupAddinPrecedenceComparer());

                    Guid[] providerRefNames = new Guid[perMigrSrcAddins.Length];
                    for (int i = 0; i < perMigrSrcAddins.Length; ++i)
                    {
                        providerRefNames[i] = perMigrSrcAddins[i].ReferenceNameGuid;
                    }

                    m_perMigrationSourceSortedLookupProviderRefName.Add(addins.Key, providerRefNames);
                }
            }
        }