Skip to content

Commit 77b0565

Browse files
committed
ACP2E-222: Magento forms can be submitted before the Google Recaptcha appears in the form
1 parent 2cb012b commit 77b0565

File tree

6 files changed

+65
-2
lines changed

6 files changed

+65
-2
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\ViewModel;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
/**
13+
* Custom Create Account button view model
14+
*/
15+
class CreateAccountButton implements ArgumentInterface
16+
{
17+
/**
18+
* If Create Account button should be disabled
19+
*
20+
* @return bool
21+
*/
22+
public function disabled(): bool
23+
{
24+
return false;
25+
}
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\ViewModel;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
/**
13+
* Custom Login button view model
14+
*/
15+
class LoginButton implements ArgumentInterface
16+
{
17+
/**
18+
* If Login button should be disabled
19+
*
20+
* @return bool
21+
*/
22+
public function disabled(): bool
23+
{
24+
return false;
25+
}
26+
}

app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<arguments>
1919
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
2020
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
21+
<argument name="create_account_button_view_model" xsi:type="object">Magento\Customer\ViewModel\CreateAccountButton</argument>
2122
</arguments>
2223
<container name="form.additional.info" as="form_additional_info"/>
2324
<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>

app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
<container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login-container">
1616
<block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="Magento_Customer::form/login.phtml">
1717
<container name="form.additional.info" as="form_additional_info"/>
18+
<arguments>
19+
<argument name="login_button_view_model" xsi:type="object">Magento\Customer\ViewModel\LoginButton</argument>
20+
</arguments>
1821
</block>
1922
<block class="Magento\Customer\Block\Form\Login\Info" name="customer.new" template="Magento_Customer::newcustomer.phtml"/>
2023
</container>

app/code/Magento/Customer/view/frontend/templates/form/login.phtml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
// phpcs:disable Generic.Files.LineLength.TooLong
88

99
/** @var \Magento\Customer\Block\Form\Login $block */
10+
/** @var \Magento\Customer\ViewModel\LoginButton $loginButtonViewModel */
11+
$loginButtonViewModel = $block->getData('login_button_view_model');
1012
?>
1113
<div class="block block-customer-login">
1214
<div class="block-title">
@@ -47,12 +49,13 @@
4749
</div>
4850
<?= $block->getChildHtml('form_additional_info') ?>
4951
<div class="actions-toolbar">
50-
<div class="primary"><button type="submit" class="action login primary" name="send" id="send2"><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
52+
<div class="primary"><button type="submit" class="action login primary" name="send" id="send2" <?php if ($loginButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
5153
<div class="secondary"><a class="action remind" href="<?= $block->escapeUrl($block->getForgotPasswordUrl()) ?>"><span><?= $block->escapeHtml(__('Forgot Your Password?')) ?></span></a></div>
5254
</div>
5355
</fieldset>
5456
</form>
5557
</div>
58+
<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate?>
5659
<script type="text/x-magento-init">
5760
{
5861
"*": {

app/code/Magento/Customer/view/frontend/templates/form/register.phtml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ $directoryHelper = $block->getData('directoryHelper');
1717
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
1818
$regionProvider = $block->getRegionProvider();
1919
$formData = $block->getFormData();
20+
/** @var \Magento\Customer\ViewModel\CreateAccountButton $createAccountButtonViewModel */
21+
$createAccountButtonViewModel = $block->getData('create_account_button_view_model');
2022
?>
2123
<?php $displayAll = $block->getConfig('general/region/display_all'); ?>
2224
<?= $block->getChildHtml('form_fields_before') ?>
@@ -291,7 +293,9 @@ $formData = $block->getFormData();
291293
<div class="primary">
292294
<button type="submit"
293295
class="action submit primary"
294-
title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>">
296+
title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>"
297+
id="send2"
298+
<?php if ($createAccountButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>>
295299
<span><?= $escaper->escapeHtml(__('Create an Account')) ?></span>
296300
</button>
297301
</div>

0 commit comments

Comments
 (0)