From 8c1ced8e5a9618e7003394cc63fb19bbc9604500 Mon Sep 17 00:00:00 2001 From: Sergey Chubaryan Date: Sun, 16 Feb 2025 03:02:50 +0300 Subject: [PATCH] add html template --- .../server/handlers/user_verify_handler.go | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/cmd/backend/server/handlers/user_verify_handler.go b/cmd/backend/server/handlers/user_verify_handler.go index 926ff83..b6a6163 100644 --- a/cmd/backend/server/handlers/user_verify_handler.go +++ b/cmd/backend/server/handlers/user_verify_handler.go @@ -4,48 +4,68 @@ import ( "backend/internal/core/services" "backend/pkg/logger" + "html/template" + "github.com/gin-gonic/gin" ) -type A struct { +type HtmlTemplate struct { + TabTitle string Title string Text string Link string LinkText string } -func NewUserVerifyEmailHandler(log logger.Logger, userService services.UserService) gin.HandlerFunc { - htmlOk := ` - - - Verify Email - - -

Email successfuly verified

- - - ` +const htmlTemplate = ` + + + {{.TabTitle}} + + + {{if .Title}} +

{{.Title}}

+ {{end}} - htmlNotOk := ` - Verify Email -

Email was not verified

- - ` +

{{.Text}}

+ + {{if .Link}} + {{.LinkText}} + {{end}} + + +` + +func NewUserVerifyEmailHandler(log logger.Logger, userService services.UserService) gin.HandlerFunc { + template, err := template.New("verify-email").Parse(htmlTemplate) + if err != nil { + log.Fatal().Err(err).Msg("Error parsing template") + } return func(c *gin.Context) { + tmp := HtmlTemplate{ + TabTitle: "Verify Email", + Text: "Error verifying email", + } + token, ok := c.GetQuery("token") if !ok || token == "" { - c.Data(400, "text/html", []byte(htmlNotOk)) + log.Error().Err(err).Msg("No token in query param") + template.Execute(c.Writer, tmp) + c.Status(400) return } err := userService.VerifyEmail(c, token) if err != nil { log.Error().Err(err).Msg("Error verifying email") - c.Data(400, "text/html", []byte(htmlNotOk)) + template.Execute(c.Writer, tmp) + c.Status(400) return } - c.Data(200, "text/html", []byte(htmlOk)) + tmp.Text = "Email successfully verified" + template.Execute(c.Writer, tmp) + c.Status(200) } }