added hcaptcha

This commit is contained in:
Mazyar
2025-12-05 18:10:05 +03:30
parent b8a10f355e
commit b01c0f9368
9 changed files with 222 additions and 18 deletions
+17 -3
View File
@@ -1,6 +1,7 @@
package contact
import (
"tm/pkg/hcaptcha"
"tm/pkg/response"
"github.com/labstack/echo/v4"
@@ -8,13 +9,15 @@ import (
// Handler handles HTTP requests for contact operations
type Handler struct {
service Service
service Service
hcaptchaVerifier hcaptcha.Verifier
}
// NewHandler creates a new contact handler
func NewHandler(service Service) *Handler {
func NewHandler(service Service, hcaptchaVerifier hcaptcha.Verifier) *Handler {
return &Handler{
service: service,
service: service,
hcaptchaVerifier: hcaptchaVerifier,
}
}
@@ -35,6 +38,17 @@ func (h *Handler) Create(c echo.Context) error {
return response.ValidationError(c, "Invalid request data", err.Error())
}
// Verify hCaptcha token
remoteIP := c.RealIP()
verificationResponse, err := h.hcaptchaVerifier.Verify(form.HCaptchaToken, remoteIP)
if err != nil {
return response.BadRequest(c, "Failed to verify hCaptcha token", "")
}
if !verificationResponse.Success {
return response.BadRequest(c, "hCaptcha verification failed", "")
}
// Create contact
contact, err := h.service.Create(c.Request().Context(), form)
if err != nil {