Use cloudflare turnstile.

This commit is contained in:
2025-05-15 15:01:39 +08:00
parent 578aab36c3
commit f4e82092eb
11 changed files with 134 additions and 23 deletions

View File

@@ -3,6 +3,7 @@ package service
import (
"errors"
"fmt"
"github.com/gofiber/fiber/v3/log"
"nysoure/server/config"
"nysoure/server/dao"
"nysoure/server/model"
@@ -18,7 +19,7 @@ const (
embedAvatarCount = 1
)
func CreateUser(username, password string) (model.UserViewWithToken, error) {
func CreateUser(username, password, cfToken string) (model.UserViewWithToken, error) {
if !config.AllowRegister() {
return model.UserViewWithToken{}, model.NewRequestError("User registration is not allowed")
}
@@ -28,6 +29,14 @@ func CreateUser(username, password string) (model.UserViewWithToken, error) {
if len(password) < 6 || len(password) > 20 {
return model.UserViewWithToken{}, model.NewRequestError("Password must be between 6 and 20 characters")
}
passed, err := verifyCfToken(cfToken)
if err != nil {
log.Error("Error verifying Cloudflare token:", err)
return model.UserViewWithToken{}, model.NewInternalServerError("Failed to verify Cloudflare token")
}
if !passed {
return model.UserViewWithToken{}, model.NewRequestError("invalid Cloudflare token")
}
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return model.UserViewWithToken{}, err