public ProviderBase() { _localizationDataProvider = new LocalizationDataProvider(); _appsDataProvider = new AppsDataProvider(); _facebookDataProvider = new FacebookDataProvider(); _userDataProvider = new UserDataProvider(); _userFavoritesDataProvider = new UserFavoritesDataProvider(); _userMessagesDataProvider = new UserMessagesDataProvider(); _userVisitsDataProvider = new UserVisitsDataProvider(); _userLikesDataProvider = new UserLikesDataProvider(); _geoIpDataProvider = new GeoIpDataProvider(); }
private bool IsAllowedToSeeContent() { if (!bool.Parse(ConfigurationManager.AppSettings["EnableGeoBlocking"])) return true; long facebookUserId = 0; if (Request.Form.signed_request != null) { var signedRequest = Request.Form.signed_request; var parsedRequest = new FacebookClient().ParseSignedRequest("549eeee523fbf171723433b118a14d8b", signedRequest); if (((JsonObject)parsedRequest).ContainsKey("user_id")) facebookUserId = long.Parse((string)((JsonObject)parsedRequest)["user_id"]); } if (facebookUserId == 0) return true; var geoIpDataProvider = new GeoIpDataProvider(); var usersDataProvider = new UserDataProvider(); var ipsWhiteList = geoIpDataProvider.GetWhiteListedIps(); var usersWhiteList = usersDataProvider.GetUsersWhitelist("gokapara-newyork"); var userIp = Request.UserHostAddress; if (ipsWhiteList.Exists(z => z["ip"].AsString == userIp)) return true; if (usersWhiteList.Exists(z => z == facebookUserId)) return true; BsonDocument geoLocation = null; try { geoLocation = geoIpDataProvider.GetIpLocationInfo(userIp, "country"); } catch (Exception ex) { _logger.Error(ex); } string userCountry = geoLocation != null ? geoLocation["country"].AsString : null; if (!string.IsNullOrEmpty(userCountry) && userCountry != "IL") return true; return false; }