Skip to content

Commit dac3ce9

Browse files
committed
security-package/issues/148: "Language code" does not work for reCAPTCHA v2 ("I am not a robot") and is missed for reCAPTCHA v2-3 Invisible
1 parent 37add35 commit dac3ce9

File tree

13 files changed

+142
-22
lines changed

13 files changed

+142
-22
lines changed

ReCaptchaVersion2Checkbox/Model/Adminhtml/UiConfigProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ public function get(): array
4242
$config = [
4343
'rendering' => [
4444
'sitekey' => $this->getPublicKey(),
45-
'theme' => $this->getTheme(),
4645
'size' => $this->getSize(),
46+
'theme' => $this->getTheme(),
4747
'lang' => $this->getLanguageCode(),
4848
],
4949
'invisible' => false,

ReCaptchaVersion2Checkbox/Model/Frontend/UiConfigProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public function get(): array
4343
$config = [
4444
'rendering' => [
4545
'sitekey' => $this->getPublicKey(),
46-
'theme' => $this->getTheme(),
4746
'size' => $this->getSize(),
47+
'theme' => $this->getTheme(),
4848
'lang' => $this->getLanguageCode(),
4949
],
5050
'invisible' => false,

ReCaptchaVersion2Checkbox/etc/adminhtml/system.xml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717
<backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
1818
</field>
1919

20-
<field id="theme" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="0"
20+
<field id="size" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="0"
2121
showInStore="0" canRestore="1">
22-
<label>Theme</label>
23-
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Theme</source_model>
22+
<label>Size</label>
23+
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Size</source_model>
2424
</field>
2525

26-
<field id="size" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="0"
26+
<field id="theme" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="0"
2727
showInStore="0" canRestore="1">
28-
<label>Size</label>
29-
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Size</source_model>
28+
<label>Theme</label>
29+
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Theme</source_model>
3030
</field>
3131

3232
<field id="lang" translate="label comment" type="text" sortOrder="50" showInDefault="1" showInWebsite="0"
@@ -60,16 +60,16 @@
6060
<backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
6161
</field>
6262

63-
<field id="theme" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1"
63+
<field id="size" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1"
6464
showInStore="0" canRestore="1">
65-
<label>Theme</label>
66-
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Theme</source_model>
65+
<label>Size</label>
66+
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Size</source_model>
6767
</field>
6868

69-
<field id="size" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="1"
69+
<field id="theme" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="1"
7070
showInStore="0" canRestore="1">
71-
<label>Size</label>
72-
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Size</source_model>
71+
<label>Theme</label>
72+
<source_model>Magento\ReCaptchaVersion2Checkbox\Model\OptionSource\Theme</source_model>
7373
</field>
7474

7575
<field id="lang" translate="label comment" type="text" sortOrder="50" showInDefault="1" showInWebsite="1"

ReCaptchaVersion2Invisible/Model/Adminhtml/UiConfigProvider.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class UiConfigProvider implements UiConfigProviderInterface
1717
{
1818
private const XML_PATH_PUBLIC_KEY = 'recaptcha_backend/type_invisible/public_key';
1919
private const XML_PATH_POSITION = 'recaptcha_backend/type_invisible/position';
20+
private const XML_PATH_THEME = 'recaptcha_backend/type_invisible/theme';
2021
private const XML_PATH_LANGUAGE_CODE = 'recaptcha_backend/type_invisible/lang';
2122

2223
/**
@@ -43,6 +44,7 @@ public function get(): array
4344
'sitekey' => $this->getPublicKey(),
4445
'badge' => $this->getInvisibleBadgePosition(),
4546
'size' => 'invisible',
47+
'theme' => $this->getTheme(),
4648
'lang'=> $this->getLanguageCode()
4749
],
4850
'invisible' => true,
@@ -72,6 +74,18 @@ private function getInvisibleBadgePosition(): string
7274
);
7375
}
7476

77+
/**
78+
* Get theme
79+
*
80+
* @return string
81+
*/
82+
private function getTheme(): string
83+
{
84+
return (string)$this->scopeConfig->getValue(
85+
self::XML_PATH_THEME
86+
);
87+
}
88+
7589
/**
7690
* Get language code
7791
*

ReCaptchaVersion2Invisible/Model/Frontend/UiConfigProvider.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class UiConfigProvider implements UiConfigProviderInterface
1818
{
1919
private const XML_PATH_PUBLIC_KEY = 'recaptcha_frontend/type_invisible/public_key';
2020
private const XML_PATH_POSITION = 'recaptcha_frontend/type_invisible/position';
21+
private const XML_PATH_THEME = 'recaptcha_frontend/type_invisible/theme';
2122
private const XML_PATH_LANGUAGE_CODE = 'recaptcha_frontend/type_invisible/lang';
2223

2324
/**
@@ -44,6 +45,7 @@ public function get(): array
4445
'sitekey' => $this->getPublicKey(),
4546
'badge' => $this->getInvisibleBadgePosition(),
4647
'size' => 'invisible',
48+
'theme' => $this->getTheme(),
4749
'lang' => $this->getLanguageCode()
4850
],
4951
'invisible' => true,
@@ -74,6 +76,19 @@ private function getInvisibleBadgePosition(): string
7476
);
7577
}
7678

79+
/**
80+
* Get theme
81+
*
82+
* @return string
83+
*/
84+
private function getTheme(): string
85+
{
86+
return (string)$this->scopeConfig->getValue(
87+
self::XML_PATH_THEME,
88+
ScopeInterface::SCOPE_WEBSITE
89+
);
90+
}
91+
7792
/**
7893
* Get language code
7994
*

ReCaptchaVersion2Invisible/etc/adminhtml/system.xml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@
2323
<source_model>Magento\ReCaptchaVersion2Invisible\Model\OptionSource\Position</source_model>
2424
</field>
2525

26-
<field id="lang" translate="label comment" type="text" sortOrder="40" showInDefault="1" showInWebsite="0"
26+
<field id="theme" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="0"
27+
showInStore="0" canRestore="1">
28+
<label>Theme</label>
29+
<source_model>Magento\ReCaptchaVersion2Invisible\Model\OptionSource\Theme</source_model>
30+
</field>
31+
32+
<field id="lang" translate="label comment" type="text" sortOrder="50" showInDefault="1" showInWebsite="0"
2733
showInStore="0" canRestore="1">
2834
<label>Language Code</label>
2935
<comment><![CDATA[
@@ -32,7 +38,7 @@
3238
]]></comment>
3339
</field>
3440

35-
<field id="validation_failure_message" translate="label" type="textarea" sortOrder="50" showInDefault="1"
41+
<field id="validation_failure_message" translate="label" type="textarea" sortOrder="60" showInDefault="1"
3642
showInWebsite="0" showInStore="0" canRestore="1">
3743
<label>reCAPTCHA Validation Failure Message</label>
3844
</field>
@@ -60,7 +66,13 @@
6066
<source_model>Magento\ReCaptchaVersion2Invisible\Model\OptionSource\Position</source_model>
6167
</field>
6268

63-
<field id="lang" translate="label comment" type="text" sortOrder="40" showInDefault="1" showInWebsite="1"
69+
<field id="theme" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="1"
70+
showInStore="0" canRestore="1">
71+
<label>Theme</label>
72+
<source_model>Magento\ReCaptchaVersion2Invisible\Model\OptionSource\Theme</source_model>
73+
</field>
74+
75+
<field id="lang" translate="label comment" type="text" sortOrder="50" showInDefault="1" showInWebsite="1"
6476
showInStore="1" canRestore="1">
6577
<label>Language Code</label>
6678
<comment><![CDATA[
@@ -69,7 +81,7 @@
6981
]]></comment>
7082
</field>
7183

72-
<field id="validation_failure_message" translate="label" type="textarea" sortOrder="50" showInDefault="1"
84+
<field id="validation_failure_message" translate="label" type="textarea" sortOrder="60" showInDefault="1"
7385
showInWebsite="1" showInStore="1" canRestore="1">
7486
<label>reCAPTCHA Validation Failure Message</label>
7587
</field>

ReCaptchaVersion2Invisible/etc/config.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,17 @@
1212
<type_invisible>
1313
<private_key backend_model="Magento\Config\Model\Config\Backend\Encrypted"/>
1414
<position>inline</position>
15+
<theme>light</theme>
16+
<lang/>
1517
<validation_failure_message>reCAPTCHA verification failed</validation_failure_message>
1618
</type_invisible>
1719
</recaptcha_backend>
1820
<recaptcha_frontend>
1921
<type_invisible>
2022
<private_key backend_model="Magento\Config\Model\Config\Backend\Encrypted"/>
2123
<position>inline</position>
24+
<theme>light</theme>
25+
<lang/>
2226
<validation_failure_message>reCAPTCHA verification failed</validation_failure_message>
2327
</type_invisible>
2428
</recaptcha_frontend>

ReCaptchaVersion2Invisible/etc/di.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,19 @@
5252
</argument>
5353
</arguments>
5454
</virtualType>
55+
<virtualType name="Magento\ReCaptchaVersion2Invisible\Model\OptionSource\Theme"
56+
type="Magento\ReCaptchaAdminUi\Model\OptionSource">
57+
<arguments>
58+
<argument name="options" xsi:type="array">
59+
<item name="light" xsi:type="array">
60+
<item name="label" xsi:type="string" translate="true">Light Theme</item>
61+
<item name="value" xsi:type="string">light</item>
62+
</item>
63+
<item name="dark" xsi:type="array">
64+
<item name="label" xsi:type="string" translate="true">Dark Theme</item>
65+
<item name="value" xsi:type="string">dark</item>
66+
</item>
67+
</argument>
68+
</arguments>
69+
</virtualType>
5570
</config>

ReCaptchaVersion3Invisible/Model/Adminhtml/UiConfigProvider.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class UiConfigProvider implements UiConfigProviderInterface
1717
{
1818
private const XML_PATH_PUBLIC_KEY = 'recaptcha_backend/type_recaptcha_v3/public_key';
1919
private const XML_PATH_POSITION = 'recaptcha_backend/type_recaptcha_v3/position';
20+
private const XML_PATH_THEME = 'recaptcha_backend/type_recaptcha_v3/theme';
2021
private const XML_PATH_LANGUAGE_CODE = 'recaptcha_backend/type_recaptcha_v3/lang';
2122

2223
/**
@@ -43,6 +44,7 @@ public function get(): array
4344
'sitekey' => $this->getPublicKey(),
4445
'badge' => $this->getInvisibleBadgePosition(),
4546
'size' => 'invisible',
47+
'theme' => $this->getTheme(),
4648
'lang'=> $this->getLanguageCode()
4749
],
4850
'invisible' => true,
@@ -72,6 +74,18 @@ private function getInvisibleBadgePosition(): string
7274
);
7375
}
7476

77+
/**
78+
* Get theme
79+
*
80+
* @return string
81+
*/
82+
private function getTheme(): string
83+
{
84+
return (string)$this->scopeConfig->getValue(
85+
self::XML_PATH_THEME
86+
);
87+
}
88+
7589
/**
7690
* Get language code
7791
*

ReCaptchaVersion3Invisible/Model/Frontend/UiConfigProvider.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class UiConfigProvider implements UiConfigProviderInterface
1818
{
1919
private const XML_PATH_PUBLIC_KEY = 'recaptcha_frontend/type_recaptcha_v3/public_key';
2020
private const XML_PATH_POSITION = 'recaptcha_frontend/type_recaptcha_v3/position';
21+
private const XML_PATH_THEME = 'recaptcha_frontend/type_recaptcha_v3/theme';
2122
private const XML_PATH_LANGUAGE_CODE = 'recaptcha_frontend/type_recaptcha_v3/lang';
2223

2324
/**
@@ -44,6 +45,7 @@ public function get(): array
4445
'sitekey' => $this->getPublicKey(),
4546
'badge' => $this->getInvisibleBadgePosition(),
4647
'size' => 'invisible',
48+
'theme' => $this->getTheme(),
4749
'lang'=> $this->getLanguageCode()
4850
],
4951
'invisible' => true,
@@ -74,6 +76,19 @@ private function getInvisibleBadgePosition(): string
7476
);
7577
}
7678

79+
/**
80+
* Get theme
81+
*
82+
* @return string
83+
*/
84+
private function getTheme(): string
85+
{
86+
return (string)$this->scopeConfig->getValue(
87+
self::XML_PATH_THEME,
88+
ScopeInterface::SCOPE_WEBSITE
89+
);
90+
}
91+
7792
/**
7893
* Get language code
7994
*

0 commit comments

Comments
 (0)