34 lines
685 B
Go
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
|
|
}
|