diff --git a/pkg/blocks/forms/create_profile.templ b/pkg/blocks/forms/create_profile.templ index e0fccda53..764ab1a00 100644 --- a/pkg/blocks/forms/create_profile.templ +++ b/pkg/blocks/forms/create_profile.templ @@ -2,6 +2,8 @@ package forms import ( "fmt" + "strconv" + "errors" "github.com/onsonr/sonr/pkg/blocks/layout" ) @@ -15,6 +17,30 @@ func (d CreateProfileData) IsHumanLabel() string { return fmt.Sprintf("What is %d + %d?", d.FirstNumber, d.LastNumber) } +func ValidateCreateProfileForm(formData map[string][]string) error { + // Validate ishuman slider + ishumanValues := formData["is_human"] + if len(ishumanValues) == 0 { + return errors.New("human verification is required") + } + + ishumanSum, err := strconv.Atoi(ishumanValues[0]) + if err != nil { + return errors.New("invalid human verification value") + } + + // Get the expected sum from the form data + firstNum, _ := strconv.Atoi(formData["first_number"][0]) + lastNum, _ := strconv.Atoi(formData["last_number"][0]) + expectedSum := firstNum + lastNum + + if ishumanSum != expectedSum { + return errors.New("incorrect sum for human verification") + } + + return nil +} + // ProfileForm is a standard form styled like a card templ CreateProfile(action string, method string, data CreateProfileData) {
@@ -35,7 +61,26 @@ templ CreateProfile(action string, method string, data CreateProfileData) { @layout.Spacer() - + +
diff --git a/pkg/gateway/handlers/register_handler.go b/pkg/gateway/handlers/register_handler.go index 8c16274b9..89bf94fb3 100644 --- a/pkg/gateway/handlers/register_handler.go +++ b/pkg/gateway/handlers/register_handler.go @@ -24,6 +24,16 @@ func HandleRegisterView(c echo.Context) error { } func HandleRegisterStart(c echo.Context) error { + // Validate the form submission + formData := make(map[string][]string) + for key, values := range c.Request().Form { + formData[key] = values + } + + if err := forms.ValidateCreateProfileForm(formData); err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err.Error()) + } + challenge, _ := protocol.CreateChallenge() handle := c.FormValue("handle") firstName := c.FormValue("first_name")