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); }
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; }