示例#1
0
        private bool IsRuleApplicable(RichIdentity sourceUserIdentity, AliasMapping rule, bool leftToRight)
        {
            string fromAlias = (leftToRight ? rule.Left : rule.Right);

            if (string.IsNullOrEmpty(fromAlias))
            {
                return(false);
            }

            bool mappingRuleIsKnown = false;

            switch (rule.MappingRule)
            {
            case MappingRules.SimpleReplacement:
            case MappingRules.Ignore:
            case MappingRules.FormatStringComposition:
            case MappingRules.FormatStringDecomposition:
                mappingRuleIsKnown = true;
                break;

            default:
                TraceManager.TraceError("Unknown DisplayNameMapping.MappingRule type");
                mappingRuleIsKnown = false;
                break;
            }

            if (!mappingRuleIsKnown)
            {
                return(false);
            }

            return(fromAlias.Equals(UserIdentityMappingConfigSymbols.ANY, StringComparison.OrdinalIgnoreCase) ||
                   fromAlias.Equals(sourceUserIdentity.Alias ?? string.Empty, StringComparison.OrdinalIgnoreCase));
        }
示例#2
0
            void TestEnvironment_ConfigureUserIdLookup(MigrationTestEnvironment env, Configuration config)
            {
                var aliasMapping = new AliasMapping();

                aliasMapping.Left        = "*";
                aliasMapping.Right       = "vseqa1";
                aliasMapping.MappingRule = MappingRules.SimpleReplacement;
                var aliasMappings = new AliasMappings();

                aliasMappings.AliasMapping.Add(aliasMapping);
                aliasMappings.DirectionOfMapping = MappingDirectionEnum.LeftToRight;
                config.SessionGroup.UserIdentityMappings.AliasMappings.Add(aliasMappings);

                var domainMapping = new DomainMapping();

                domainMapping.Left        = "*";
                domainMapping.Right       = "redmond";
                domainMapping.MappingRule = MappingRules.SimpleReplacement;
                var domainMappings = new DomainMappings();

                domainMappings.DomainMapping.Add(domainMapping);
                domainMappings.DirectionOfMapping = MappingDirectionEnum.LeftToRight;
                config.SessionGroup.UserIdentityMappings.DomainMappings.Add(domainMappings);

                config.SessionGroup.UserIdentityMappings.EnableValidation = false;
                config.SessionGroup.UserIdentityMappings.UserIdentityLookupAddins.UserIdentityLookupAddin.Add(
                    "CDDE6B6B-72FC-43b6-BBD1-B8A89A788C6F"); // Tfs2010UserIdLookupAddin

                foreach (var ms in config.SessionGroup.MigrationSources.MigrationSource)
                {
                    ms.Settings.DefaultUserIdProperty.UserIdPropertyName = UserIdPropertyNameEnum.DomainAlias;
                }
            }
示例#3
0
        /// <summary>
        /// Create an alias mapping on the fly.
        /// This ensure the file can be changed while the app is running.
        /// </summary>
        private IAliasMapping CreateAliasMapping()
        {
            if (!File.Exists(GetAliasMappingPath()))
            {
                return(new NullAliasMapping());
            }

            var mapping = new AliasMapping(GetAliasMappingPath());

            mapping.Load();
            return(mapping);
        }
示例#4
0
        public void MyTestInitialize()
        {
            var mappingsCollection = new AliasMappings();

            mappingsCollection.DirectionOfMapping = MappingDirectionEnum.LeftToRight;
            foreach (var mapping in m_leftToRigthMappings)
            {
                AliasMapping mappingRule = new AliasMapping();
                mappingRule.Left        = mapping.Left;
                mappingRule.Right       = mapping.Right;
                mappingRule.MappingRule = MappingRules.SimpleReplacement;
                mappingsCollection.AliasMapping.Add(mappingRule);
            }
            m_aliasMappings.Add(mappingsCollection);

            mappingsCollection = new AliasMappings();
            mappingsCollection.DirectionOfMapping = MappingDirectionEnum.RightToLeft;
            foreach (var mapping in m_rightToLeftMappings)
            {
                AliasMapping mappingRule = new AliasMapping();
                mappingRule.Left        = mapping.Left;
                mappingRule.Right       = mapping.Right;
                mappingRule.MappingRule = MappingRules.SimpleReplacement;
                mappingsCollection.AliasMapping.Add(mappingRule);
            }
            m_aliasMappings.Add(mappingsCollection);

            mappingsCollection = new AliasMappings();
            mappingsCollection.DirectionOfMapping = MappingDirectionEnum.TwoWay;
            foreach (var mapping in m_twoWayMappings)
            {
                AliasMapping mappingRule = new AliasMapping();
                mappingRule.Left        = mapping.Left;
                mappingRule.Right       = mapping.Right;
                mappingRule.MappingRule = MappingRules.SimpleReplacement;
                mappingsCollection.AliasMapping.Add(mappingRule);
            }

            foreach (var mapping in m_ignoreMappings)
            {
                AliasMapping mappingRule = new AliasMapping();
                mappingRule.Left        = mapping.Left;
                mappingRule.Right       = mapping.Right;
                mappingRule.MappingRule = MappingRules.Ignore;
                mappingsCollection.AliasMapping.Add(mappingRule);
            }

            m_aliasMappings.Add(mappingsCollection);
        }
示例#5
0
        private bool MapUser(
            RichIdentity sourceUserIdentity,
            bool leftToRight,
            RichIdentity mappedUserIdentity)
        {
            m_mappingRuleComparer.MapFromLeftToRight = leftToRight;

            NotifyingCollection <AliasMapping> unidirectionalRules;

            if (leftToRight)
            {
                if (!m_perDirectionMappings.ContainsKey(MappingDirectionEnum.LeftToRight))
                {
                    return(false);
                }
                unidirectionalRules = m_perDirectionMappings[MappingDirectionEnum.LeftToRight];
            }
            else
            {
                if (!m_perDirectionMappings.ContainsKey(MappingDirectionEnum.RightToLeft))
                {
                    return(false);
                }
                unidirectionalRules = m_perDirectionMappings[MappingDirectionEnum.RightToLeft];
            }

            bool mapped = false;

            AliasMapping appliedUnidirectionalRule   = null;
            RichIdentity unidirectionalMappingOutput = null;

            foreach (AliasMapping rule in unidirectionalRules)
            {
                RichIdentity mappingOutput = new RichIdentity();
                if (TryApplyMappingRule(sourceUserIdentity, leftToRight, mappingOutput, rule))
                {
                    if (appliedUnidirectionalRule == null ||
                        m_mappingRuleComparer.Compare(rule, appliedUnidirectionalRule) < 0)
                    {
                        appliedUnidirectionalRule   = rule;
                        unidirectionalMappingOutput = mappingOutput;
                    }
                    mapped = true;
                }
            }

            if (mapped)
            {
                mappedUserIdentity.Alias = unidirectionalMappingOutput.Alias;
                return(true);
            }

            AliasMapping appliedBidirectionalRule   = null;
            RichIdentity bidirectionalMappingOutput = null;

            if (m_perDirectionMappings.ContainsKey(MappingDirectionEnum.TwoWay))
            {
                foreach (AliasMapping rule in m_perDirectionMappings[MappingDirectionEnum.TwoWay])
                {
                    RichIdentity mappingOutput = new RichIdentity();
                    if (TryApplyMappingRule(sourceUserIdentity, leftToRight, mappingOutput, rule))
                    {
                        if (appliedBidirectionalRule == null ||
                            m_mappingRuleComparer.Compare(rule, appliedBidirectionalRule) < 0)
                        {
                            appliedBidirectionalRule   = rule;
                            bidirectionalMappingOutput = mappingOutput;
                        }
                        mapped = true;
                    }
                }
            }

            if (mapped)
            {
                mappedUserIdentity.Alias = bidirectionalMappingOutput.Alias;
            }

            return(mapped);
        }
示例#6
0
        private bool ApplyRule(RichIdentity sourceUserIdentity, bool leftToRight, RichIdentity mappingOutput, AliasMapping rule)
        {
            string toAlias = (leftToRight ? rule.Right : rule.Left);
            IStringManipulationRule stringManipulationRule = StringManipulationRuleFactory.GetInstance(rule.MappingRule);

            if (stringManipulationRule != null)
            {
                mappingOutput.Alias = stringManipulationRule.Apply(sourceUserIdentity.Alias, toAlias);
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#7
0
 private bool TryApplyMappingRule(RichIdentity sourceUserIdentity, bool leftToRight, RichIdentity mappingOutput, AliasMapping rule)
 {
     if (IsRuleApplicable(sourceUserIdentity, rule, leftToRight))
     {
         return(ApplyRule(sourceUserIdentity, leftToRight, mappingOutput, rule));
     }
     else
     {
         return(false);
     }
 }