2025-03-22 19:48:19 +08:00

34 lines
685 B
Go

package captcha
import (
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
)
type TemplateData struct {
ApiKey string `json:"api_key"`
}
func GetTemplateData() TemplateData {
return TemplateData{
ApiKey: viper.GetString("captcha.api_key"),
}
}
type CaptchaAdapter interface {
Validate(token, ip string) bool
}
var adapters = map[string]CaptchaAdapter{
"turnstile": &TurnstileAdapter{},
}
func Validate(token, ip string) bool {
provider := viper.GetString("captcha.provider")
if adapter, ok := adapters[provider]; ok {
return adapter.Validate(token, ip)
}
log.Error().Msg("Unable to handle captcha validate request due to unsupported provider.")
return false
}