Module: Middleware

Defined in:
lib/middleware/app_type_detector.rb,
lib/middleware/cloudflare_geo_simulator.rb

Overview

Simulates Cloudflare visitor location headers in development

Enabled when TRACK_VISITOR=y is set (only affects www subdomain)
Profile selected via TRACK_VISITOR_PROFILE environment variable
Default profile: US_IL (Illinois - WarmlyYours HQ)

Usage:
TRACK_VISITOR=y bin/dev # Default: Illinois
TRACK_VISITOR=y TRACK_VISITOR_PROFILE=US-FL bin/dev # Florida
TRACK_VISITOR=y TRACK_VISITOR_PROFILE=CA-QC bin/dev # Quebec (Law 25)
TRACK_VISITOR=y TRACK_VISITOR_PROFILE=DE bin/dev # Germany (GDPR)

Available profiles (consistent format):
US-IL - United States (Illinois) - DEFAULT - Opt-out model
US-CA - United States (California) - Opt-out model
US-FL - United States (Florida) - Opt-out model
US-TX - United States (Texas) - Opt-out model
US-NY - United States (New York) - Opt-out model
CA-QC - Canada (Quebec) - Law 25 opt-in required
CA-ON - Canada (Ontario) - Implied consent
CA-AB - Canada (Alberta) - Implied consent
CA-BC - Canada (British Columbia) - Implied consent
DE - Germany - GDPR opt-in required
FR - France - GDPR opt-in required
GB - United Kingdom - UK GDPR opt-in required
ES - Spain - GDPR opt-in required
IT - Italy - GDPR opt-in required
NL - Netherlands - GDPR opt-in required
CH - Switzerland - nFADP opt-in required
BR - Brazil - LGPD (similar to GDPR)
AU - Australia - Privacy Act
JP - Japan - APPI
MX - Mexico - LFPDPPP
UNKNOWN - Unknown location (XX) - Tests fallback
NONE - No headers - Tests VisitGeocoderWorker fallback

You can also set individual headers via environment variables (takes precedence):
CF_IPCOUNTRY=CA CF_REGION_CODE=QC TRACK_VISITOR=y bin/dev

Defined Under Namespace

Classes: AppTypeDetector, CloudflareGeoSimulator