diff options
author | X. Ding <dingsm@gmail.com> | 2022-10-28 18:25:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-28 11:25:01 +0100 |
commit | 0782011f54dca98d96a8c5a78f68569ed045892a (patch) | |
tree | 238f27eeddc4d20b3876fb3e3dcbae7c456f0745 /clientapi/routing/auth_fallback.go | |
parent | f6035822e75ad000869a0e01eff35941280f0250 (diff) |
Add hcaptcha support besides Google ReCaptcha (#2834)
### Pull Request Checklist
This PR add support for hcaptcha.com as an alternative to Google
ReCaptcha. It also makes possible for user to customize ReCaptcha URL
when needed. (Such as use recaptcha.net instead of www.google.com)
This feature needs manual test cuz it involves 3rd party _captcha_.
Signed-off-by: `Simon Ding <dxl@plotbridge.com>`
Co-authored-by: dxl <dxl@plotbridge.com>
Diffstat (limited to 'clientapi/routing/auth_fallback.go')
-rw-r--r-- | clientapi/routing/auth_fallback.go | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/clientapi/routing/auth_fallback.go b/clientapi/routing/auth_fallback.go index abfe830f..ad870993 100644 --- a/clientapi/routing/auth_fallback.go +++ b/clientapi/routing/auth_fallback.go @@ -31,8 +31,7 @@ const recaptchaTemplate = ` <title>Authentication</title> <meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0'> -<script src="https://www.google.com/recaptcha/api.js" - async defer></script> +<script src="{{.apiJsUrl}}" async defer></script> <script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script> function captchaDone() { @@ -51,8 +50,8 @@ function captchaDone() { Please verify that you're not a robot. </p> <input type="hidden" name="session" value="{{.session}}" /> - <div class="g-recaptcha" - data-sitekey="{{.siteKey}}" + <div class="{{.sitekeyClass}}" + data-sitekey="{{.sitekey}}" data-callback="captchaDone"> </div> <noscript> @@ -114,9 +113,12 @@ func AuthFallback( serveRecaptcha := func() { data := map[string]string{ - "myUrl": req.URL.String(), - "session": sessionID, - "siteKey": cfg.RecaptchaPublicKey, + "myUrl": req.URL.String(), + "session": sessionID, + "apiJsUrl": cfg.RecaptchaApiJsUrl, + "sitekey": cfg.RecaptchaPublicKey, + "sitekeyClass": cfg.RecaptchaSitekeyClass, + "formField": cfg.RecaptchaFormField, } serveTemplate(w, recaptchaTemplate, data) } @@ -155,7 +157,7 @@ func AuthFallback( return &res } - response := req.Form.Get("g-recaptcha-response") + response := req.Form.Get(cfg.RecaptchaFormField) if err := validateRecaptcha(cfg, response, clientIP); err != nil { util.GetLogger(req.Context()).Error(err) return err |