@@ -17,6 +17,7 @@ import (
17
17
"code.gitea.io/gitea/modules/base"
18
18
"code.gitea.io/gitea/modules/context"
19
19
"code.gitea.io/gitea/modules/log"
20
+ "code.gitea.io/gitea/modules/recaptcha"
20
21
"code.gitea.io/gitea/modules/setting"
21
22
"code.gitea.io/gitea/modules/util"
22
23
@@ -641,6 +642,8 @@ func LinkAccount(ctx *context.Context) {
641
642
ctx .Data ["Title" ] = ctx .Tr ("link_account" )
642
643
ctx .Data ["LinkAccountMode" ] = true
643
644
ctx .Data ["EnableCaptcha" ] = setting .Service .EnableCaptcha
645
+ ctx .Data ["CaptchaType" ] = setting .Service .CaptchaType
646
+ ctx .Data ["RecaptchaSitekey" ] = setting .Service .RecaptchaSitekey
644
647
ctx .Data ["DisableRegistration" ] = setting .Service .DisableRegistration
645
648
ctx .Data ["ShowRegistrationButton" ] = false
646
649
@@ -666,6 +669,8 @@ func LinkAccountPostSignIn(ctx *context.Context, signInForm auth.SignInForm) {
666
669
ctx .Data ["LinkAccountMode" ] = true
667
670
ctx .Data ["LinkAccountModeSignIn" ] = true
668
671
ctx .Data ["EnableCaptcha" ] = setting .Service .EnableCaptcha
672
+ ctx .Data ["CaptchaType" ] = setting .Service .CaptchaType
673
+ ctx .Data ["RecaptchaSitekey" ] = setting .Service .RecaptchaSitekey
669
674
ctx .Data ["DisableRegistration" ] = setting .Service .DisableRegistration
670
675
ctx .Data ["ShowRegistrationButton" ] = false
671
676
@@ -732,6 +737,8 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au
732
737
ctx .Data ["LinkAccountMode" ] = true
733
738
ctx .Data ["LinkAccountModeRegister" ] = true
734
739
ctx .Data ["EnableCaptcha" ] = setting .Service .EnableCaptcha
740
+ ctx .Data ["CaptchaType" ] = setting .Service .CaptchaType
741
+ ctx .Data ["RecaptchaSitekey" ] = setting .Service .RecaptchaSitekey
735
742
ctx .Data ["DisableRegistration" ] = setting .Service .DisableRegistration
736
743
ctx .Data ["ShowRegistrationButton" ] = false
737
744
@@ -755,12 +762,21 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au
755
762
return
756
763
}
757
764
758
- if setting .Service .EnableCaptcha && ! cpt .VerifyReq (ctx .Req ) {
765
+ if setting .Service .EnableCaptcha && setting . Service . CaptchaType == setting . ImageCaptcha && ! cpt .VerifyReq (ctx .Req ) {
759
766
ctx .Data ["Err_Captcha" ] = true
760
767
ctx .RenderWithErr (ctx .Tr ("form.captcha_incorrect" ), tplLinkAccount , & form )
761
768
return
762
769
}
763
770
771
+ if setting .Service .EnableCaptcha && setting .Service .CaptchaType == setting .ReCaptcha {
772
+ valid , _ := recaptcha .Verify (form .GRecaptchaResponse )
773
+ if ! valid {
774
+ ctx .Data ["Err_Captcha" ] = true
775
+ ctx .RenderWithErr (ctx .Tr ("form.captcha_incorrect" ), tplLinkAccount , & form )
776
+ return
777
+ }
778
+ }
779
+
764
780
if (len (strings .TrimSpace (form .Password )) > 0 || len (strings .TrimSpace (form .Retype )) > 0 ) && form .Password != form .Retype {
765
781
ctx .Data ["Err_Password" ] = true
766
782
ctx .RenderWithErr (ctx .Tr ("form.password_not_match" ), tplLinkAccount , & form )
@@ -858,6 +874,9 @@ func SignUp(ctx *context.Context) {
858
874
859
875
ctx .Data ["EnableCaptcha" ] = setting .Service .EnableCaptcha
860
876
877
+ ctx .Data ["CaptchaType" ] = setting .Service .CaptchaType
878
+ ctx .Data ["RecaptchaSitekey" ] = setting .Service .RecaptchaSitekey
879
+
861
880
ctx .Data ["DisableRegistration" ] = setting .Service .DisableRegistration
862
881
863
882
ctx .HTML (200 , tplSignUp )
@@ -871,6 +890,9 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
871
890
872
891
ctx .Data ["EnableCaptcha" ] = setting .Service .EnableCaptcha
873
892
893
+ ctx .Data ["CaptchaType" ] = setting .Service .CaptchaType
894
+ ctx .Data ["RecaptchaSitekey" ] = setting .Service .RecaptchaSitekey
895
+
874
896
//Permission denied if DisableRegistration or AllowOnlyExternalRegistration options are true
875
897
if ! setting .Service .ShowRegistrationButton {
876
898
ctx .Error (403 )
@@ -882,12 +904,21 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
882
904
return
883
905
}
884
906
885
- if setting .Service .EnableCaptcha && ! cpt .VerifyReq (ctx .Req ) {
907
+ if setting .Service .EnableCaptcha && setting . Service . CaptchaType == setting . ImageCaptcha && ! cpt .VerifyReq (ctx .Req ) {
886
908
ctx .Data ["Err_Captcha" ] = true
887
909
ctx .RenderWithErr (ctx .Tr ("form.captcha_incorrect" ), tplSignUp , & form )
888
910
return
889
911
}
890
912
913
+ if setting .Service .EnableCaptcha && setting .Service .CaptchaType == setting .ReCaptcha {
914
+ valid , _ := recaptcha .Verify (form .GRecaptchaResponse )
915
+ if ! valid {
916
+ ctx .Data ["Err_Captcha" ] = true
917
+ ctx .RenderWithErr (ctx .Tr ("form.captcha_incorrect" ), tplSignUp , & form )
918
+ return
919
+ }
920
+ }
921
+
891
922
if form .Password != form .Retype {
892
923
ctx .Data ["Err_Password" ] = true
893
924
ctx .RenderWithErr (ctx .Tr ("form.password_not_match" ), tplSignUp , & form )
0 commit comments