Skip to content

Commit bedd43c

Browse files
committed
merge primefaces#3448 (invisible recaptcha) into 6.2 branch
1 parent 55d3507 commit bedd43c

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

src/main/java/org/primefaces/component/captcha/CaptchaRenderer.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ protected void encodeMarkup(FacesContext context, Captcha captcha, String public
6666
writer.startElement("div", null);
6767
writer.writeAttribute("id", clientId, "id");
6868

69+
if (captcha.getSize() != null && "invisible".equals(captcha.getSize())) {
70+
writer.writeAttribute("class", "g-recaptcha", null);
71+
writer.writeAttribute("data-sitekey", publicKey, null);
72+
writer.writeAttribute("data-size", "invisible", null);
73+
}
74+
6975
renderDynamicPassThruAttributes(context, captcha);
7076

7177
writer.endElement("div");
@@ -74,7 +80,7 @@ protected void encodeMarkup(FacesContext context, Captcha captcha, String public
7480
protected void encodeScript(FacesContext context, Captcha captcha, String publicKey) throws IOException {
7581
String clientId = captcha.getClientId(context);
7682
WidgetBuilder wb = getWidgetBuilder(context);
77-
wb.initWithDomReady("Captcha", captcha.resolveWidgetVar(), clientId);
83+
wb.init("Captcha", captcha.resolveWidgetVar(), clientId);
7884

7985
wb.attr("sitekey", publicKey)
8086
.attr("theme", captcha.getTheme(), "light")
@@ -90,4 +96,4 @@ protected void encodeScript(FacesContext context, Captcha captcha, String public
9096
protected String getPublicKey(FacesContext context, Captcha captcha) {
9197
return context.getApplication().evaluateExpressionGet(context, context.getExternalContext().getInitParameter(Captcha.PUBLIC_KEY), String.class);
9298
}
93-
}
99+
}

src/main/resources/META-INF/resources/primefaces/captcha/captcha.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ PrimeFaces.widget.Captcha = PrimeFaces.widget.BaseWidget.extend({
77
this._super(cfg);
88
this.cfg.language = this.cfg.language||'en';
99
var $this = this;
10-
10+
1111
window[this.cfg.widgetVar + '_initCallback'] = function() {
1212
$this.render();
1313
};
14-
15-
$(document.body).append('<script src="https://www.google.com/recaptcha/api.js?onload=' + this.cfg.widgetVar + '_initCallback&render=explicit&hl='
16-
+ this.cfg.language +'" async defer>');
14+
15+
$(document.body).append('<script src="https://www.google.com/recaptcha/api.js?onload=' + this.cfg.widgetVar + '_initCallback&render=explicit&hl='
16+
+ this.cfg.language +'" async defer>');
17+
1718
},
18-
19+
1920
render: function() {
2021
$this = this;
2122
grecaptcha.render(this.jq.get(0), {
@@ -24,10 +25,14 @@ PrimeFaces.widget.Captcha = PrimeFaces.widget.BaseWidget.extend({
2425
'theme': this.cfg.theme,
2526
'callback': $this.cfg.callback,
2627
'expired-callback': $this.cfg.expired,
27-
'size': this.cfg.size
28+
'size': this.cfg.size
2829
});
29-
30+
31+
if (this.cfg.size === 'invisible') {
32+
grecaptcha.execute();
33+
}
34+
3035
window[this.cfg.widgetVar + '_initCallback'] = undefined;
3136
}
32-
37+
3338
});

0 commit comments

Comments
 (0)