Exemple #1
0
        public bool IsEnabled(string flightName, IFlightUser user, bool defaultValue)
        {
            var latest = _cache.GetLatestFlagsOrNull();

            if (latest == null)
            {
                _logger.LogError(
                    "Couldn't determine status of flight {Flight} as the flags haven't been loaded",
                    flightName);

                return(defaultValue);
            }

            if (!latest.Flights.TryGetValue(flightName, out var flight))
            {
                _logger.LogWarning(
                    "Couldn't determine status of flight {Flight} as it isn't in the latest feature flags",
                    flightName);

                return(defaultValue);
            }

            if (flight.All)
            {
                return(true);
            }

            // The user object may be null if the user is anonymous.
            if (user != null)
            {
                if (flight.Accounts.Contains(user.Username, StringComparer.OrdinalIgnoreCase))
                {
                    return(true);
                }

                if (TryParseEmailDomain(user.EmailAddress, out var domain) && flight.Domains.Contains(domain, StringComparer.OrdinalIgnoreCase))
                {
                    return(true);
                }

                if (flight.SiteAdmins && user.IsSiteAdmin)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
            public FactsBase()
            {
                _cache = new Mock <IFeatureFlagCacheService>();

                _target = new FeatureFlagClient(
                    _cache.Object,
                    Mock.Of <ILogger <FeatureFlagClient> >());

                _user = new TestFlightUser
                {
                    Username     = "******",
                    EmailAddress = "*****@*****.**",
                    IsSiteAdmin  = false,
                };

                _admin = new TestFlightUser
                {
                    Username     = "******",
                    EmailAddress = "*****@*****.**",
                    IsSiteAdmin  = true,
                };

                _anonymous = null;
            }