Files
nixcn-cms/pkgs/turnstile/turnstile.go
2025-12-24 20:43:19 +08:00

35 lines
636 B
Go

package turnstile
import (
"encoding/json"
"net/http"
"net/url"
"github.com/spf13/viper"
)
func VerifyTurnstile(token, ip string) (bool, error) {
form := url.Values{}
form.Set("secret", viper.GetString("secrets.turnstile"))
form.Set("response", token)
form.Set("remoteip", ip)
resp, err := http.PostForm(
"https://challenges.cloudflare.com/turnstile/v0/siteverify",
form,
)
if err != nil {
return false, err
}
defer resp.Body.Close()
var result struct {
Success bool `json:"success"`
}
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return false, err
}
return result.Success, nil
}