package handlers import ( "backend/internal/core/services" "backend/pkg/logger" "html/template" "github.com/gin-gonic/gin" ) type HtmlTemplate struct { TabTitle string Title string Text string Link string LinkText string } const htmlTemplate = ` {{.TabTitle}} {{if .Title}}

{{.Title}}

{{end}}

{{.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 == "" { 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") template.Execute(c.Writer, tmp) c.Status(400) return } tmp.Text = "Email successfully verified" template.Execute(c.Writer, tmp) c.Status(200) } }