Add support mCaptcha as captcha provider (#20458)
https://mcaptcha.org/ Co-authored-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@users.noreply.github.com>forgejo
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