From c37a7690d6a5e24530d3c0d5e8ab760a55c1a574 Mon Sep 17 00:00:00 2001 From: Kailash Nadh Date: Sat, 5 Jun 2021 12:45:10 +0530 Subject: [PATCH] Add robots noindex header to public user specific subscription pages --- cmd/handlers.go | 26 +++++++++++++++++--------- cmd/public.go | 1 + 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/cmd/handlers.go b/cmd/handlers.go index 1c0301d4..bcf6f50b 100644 --- a/cmd/handlers.go +++ b/cmd/handlers.go @@ -135,22 +135,22 @@ func registerHTTPHandlers(e *echo.Echo, app *App) { // Public subscriber facing views. e.GET("/subscription/form", handleSubscriptionFormPage) e.POST("/subscription/form", handleSubscriptionForm) - e.GET("/subscription/:campUUID/:subUUID", validateUUID(subscriberExists(handleSubscriptionPage), - "campUUID", "subUUID")) + e.GET("/subscription/:campUUID/:subUUID", noIndex(validateUUID(subscriberExists(handleSubscriptionPage), + "campUUID", "subUUID"))) e.POST("/subscription/:campUUID/:subUUID", validateUUID(subscriberExists(handleSubscriptionPage), "campUUID", "subUUID")) - e.GET("/subscription/optin/:subUUID", validateUUID(subscriberExists(handleOptinPage), "subUUID")) + e.GET("/subscription/optin/:subUUID", noIndex(validateUUID(subscriberExists(handleOptinPage), "subUUID"))) e.POST("/subscription/optin/:subUUID", validateUUID(subscriberExists(handleOptinPage), "subUUID")) e.POST("/subscription/export/:subUUID", validateUUID(subscriberExists(handleSelfExportSubscriberData), "subUUID")) e.POST("/subscription/wipe/:subUUID", validateUUID(subscriberExists(handleWipeSubscriberData), "subUUID")) - e.GET("/link/:linkUUID/:campUUID/:subUUID", validateUUID(handleLinkRedirect, - "linkUUID", "campUUID", "subUUID")) - e.GET("/campaign/:campUUID/:subUUID", validateUUID(handleViewCampaignMessage, - "campUUID", "subUUID")) - e.GET("/campaign/:campUUID/:subUUID/px.png", validateUUID(handleRegisterCampaignView, - "campUUID", "subUUID")) + e.GET("/link/:linkUUID/:campUUID/:subUUID", noIndex(validateUUID(handleLinkRedirect, + "linkUUID", "campUUID", "subUUID"))) + e.GET("/campaign/:campUUID/:subUUID", noIndex(validateUUID(handleViewCampaignMessage, + "campUUID", "subUUID"))) + e.GET("/campaign/:campUUID/:subUUID/px.png", noIndex(validateUUID(handleRegisterCampaignView, + "campUUID", "subUUID"))) // Public health API endpoint. e.GET("/health", handleHealthCheck) } @@ -232,6 +232,14 @@ func subscriberExists(next echo.HandlerFunc, params ...string) echo.HandlerFunc } } +// noIndex adds the HTTP header requesting robots to not crawl the page. +func noIndex(next echo.HandlerFunc, params ...string) echo.HandlerFunc { + return func(c echo.Context) error { + c.Response().Header().Set("X-Robots-Tag", "noindex") + return next(c) + } +} + // getPagination takes form values and extracts pagination values from it. func getPagination(q url.Values, perPage int) pagination { var ( diff --git a/cmd/public.go b/cmd/public.go index bb1994c3..22e57f87 100644 --- a/cmd/public.go +++ b/cmd/public.go @@ -286,6 +286,7 @@ func handleSubscriptionFormPage(c echo.Context) error { out := subFormTpl{} out.Title = app.i18n.T("public.sub") out.Lists = lists + return c.Render(http.StatusOK, "subscription-form", out) }