shithub: hugo

Download patch

ref: 1f1d955b56471e41d5288c57f1ef8333dc297120
parent: ffcf26e68cac843f8b257ee72f0282f405ad04a8
author: Bjørn Erik Pedersen <[email protected]>
date: Fri May 25 06:53:39 EDT 2018

Add anonymizeIP to GA privacy config

See #4751

--- a/config/privacy/privacyConfig.go
+++ b/config/privacy/privacyConfig.go
@@ -48,6 +48,9 @@
 	// Enabling this will make the GA templates respect the
 	// "Do Not Track" HTTP header. See  https://www.paulfurley.com/google-analytics-dnt/.
 	RespectDoNotTrack bool
+
+	// Enabling this will make it so the users' IP addresses are anonymized within Google Analytics.
+	AnonymizeIP bool
 }
 
 // Instagram holds the privacy configuration settings related to the Instagram shortcode.
--- a/config/privacy/privacyConfig_test.go
+++ b/config/privacy/privacyConfig_test.go
@@ -34,6 +34,7 @@
 [privacy.googleAnalytics]
 disable = true
 respectDoNotTrack = true
+anonymizeIP = true
 [privacy.instagram]
 disable = true
 simple = true
@@ -59,6 +60,7 @@
 	assert.True(pc.Disqus.Disable)
 	assert.True(pc.GoogleAnalytics.Disable)
 	assert.True(pc.GoogleAnalytics.RespectDoNotTrack)
+	assert.True(pc.GoogleAnalytics.AnonymizeIP)
 	assert.True(pc.Instagram.Disable)
 	assert.True(pc.Instagram.Simple)
 	assert.True(pc.SpeakerDeck.Disable)
--- a/hugolib/embedded_templates_test.go
+++ b/hugolib/embedded_templates_test.go
@@ -47,7 +47,10 @@
 	b.Build(BuildCfg{})
 
 	// Gheck GA regular and async
-	b.AssertFileContent("public/index.html", "'script','https://www.google-analytics.com/analytics.js','ga');\n\tga('create', 'ga_id', 'auto')", "<script async src='//www.google-analytics.com/analytics.js'>")
+	b.AssertFileContent("public/index.html",
+		"'anonymizeIp', true",
+		"'script','https://www.google-analytics.com/analytics.js','ga');\n\tga('create', 'ga_id', 'auto')",
+		"<script async src='//www.google-analytics.com/analytics.js'>")
 
 	// Disqus
 	b.AssertFileContent("public/index.html", "\"disqus_shortname\" + '.disqus.com/embed.js';")
--- a/hugolib/testhelpers_test.go
+++ b/hugolib/testhelpers_test.go
@@ -143,6 +143,23 @@
 [services.googleAnalytics]
 id = "ga_id"
 
+[privacy]
+[privacy.disqus]
+disable = false
+[privacy.googleAnalytics]
+respectDoNotTrack = true
+anonymizeIP = true
+[privacy.instagram]
+simple = true
+[privacy.speakerDeck]
+[privacy.twitter]
+enableDNT = true
+[privacy.vimeo]
+disable = false
+[privacy.youtube]
+disable = false
+privacyEnhanced = true
+
 `
 
 func (s *sitesBuilder) WithSimpleConfigFile() *sitesBuilder {
--- a/tpl/tplimpl/embedded/templates.autogen.go
+++ b/tpl/tplimpl/embedded/templates.autogen.go
@@ -111,6 +111,7 @@
 	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
 	ga('create', '{{ . }}', 'auto');
 	ga('send', 'pageview');
+	{{ if $pc.AnonymizeIP }}ga('set', 'anonymizeIp', true);{{ end -}}
 }
 </script>
 {{ end }}
@@ -133,6 +134,7 @@
 	window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
 	ga('create', '{{ . }}', 'auto');
 	ga('send', 'pageview');
+	{{ if $pc.AnonymizeIP }}ga('set', 'anonymizeIp', true);{{ end -}}
 }
 </script>
 <script async src='//www.google-analytics.com/analytics.js'></script>
--- a/tpl/tplimpl/embedded/templates/google_analytics.html
+++ b/tpl/tplimpl/embedded/templates/google_analytics.html
@@ -10,6 +10,7 @@
 	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
 	ga('create', '{{ . }}', 'auto');
 	ga('send', 'pageview');
+	{{ if $pc.AnonymizeIP }}ga('set', 'anonymizeIp', true);{{ end -}}
 }
 </script>
 {{ end }}
--- a/tpl/tplimpl/embedded/templates/google_analytics_async.html
+++ b/tpl/tplimpl/embedded/templates/google_analytics_async.html
@@ -7,6 +7,7 @@
 	window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
 	ga('create', '{{ . }}', 'auto');
 	ga('send', 'pageview');
+	{{ if $pc.AnonymizeIP }}ga('set', 'anonymizeIp', true);{{ end -}}
 }
 </script>
 <script async src='//www.google-analytics.com/analytics.js'></script>