aboutsummaryrefslogtreecommitdiff
path: root/clientapi/routing/auth_fallback.go
diff options
context:
space:
mode:
authorX. Ding <dingsm@gmail.com>2022-10-28 18:25:01 +0800
committerGitHub <noreply@github.com>2022-10-28 11:25:01 +0100
commit0782011f54dca98d96a8c5a78f68569ed045892a (patch)
tree238f27eeddc4d20b3876fb3e3dcbae7c456f0745 /clientapi/routing/auth_fallback.go
parentf6035822e75ad000869a0e01eff35941280f0250 (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.go18
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