Add support mCaptcha as captcha provider (#20458)
https://mcaptcha.org/ Co-authored-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@users.noreply.github.com>tokarchuk/v1.18
parent
452272c038
commit
58de07e5fd
@ -0,0 +1,27 @@ |
|||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package mcaptcha |
||||||
|
|
||||||
|
import ( |
||||||
|
"context" |
||||||
|
"fmt" |
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/setting" |
||||||
|
|
||||||
|
"codeberg.org/gusted/mcaptcha" |
||||||
|
) |
||||||
|
|
||||||
|
func Verify(ctx context.Context, token string) (bool, error) { |
||||||
|
valid, err := mcaptcha.Verify(ctx, &mcaptcha.VerifyOpts{ |
||||||
|
InstanceURL: setting.Service.McaptchaURL, |
||||||
|
Sitekey: setting.Service.McaptchaSitekey, |
||||||
|
Secret: setting.Service.McaptchaSecret, |
||||||
|
Token: token, |
||||||
|
}) |
||||||
|
if err != nil { |
||||||
|
return false, fmt.Errorf("wasn't able to verify mCaptcha: %v", err) |
||||||
|
} |
||||||
|
return valid, nil |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
export async function initMcaptcha() { |
||||||
|
const mCaptchaEl = document.querySelector('.m-captcha'); |
||||||
|
if (!mCaptchaEl) return; |
||||||
|
|
||||||
|
const {default: mCaptcha} = await import(/* webpackChunkName: "mcaptcha-vanilla-glue" */'@mcaptcha/vanilla-glue'); |
||||||
|
mCaptcha.INPUT_NAME = 'm-captcha-response'; |
||||||
|
const siteKey = mCaptchaEl.getAttribute('data-sitekey'); |
||||||
|
const instanceURL = mCaptchaEl.getAttribute('data-instance-url'); |
||||||
|
|
||||||
|
mCaptcha.default({ |
||||||
|
siteKey: { |
||||||
|
instanceUrl: new URL(instanceURL), |
||||||
|
key: siteKey, |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
Loading…
Reference in new issue