Commits vergleichen
17 Commits
Autor | SHA1 | Datum |
---|---|---|
Markus Gärtner | 45657767e4 | |
Markus Gärtner | a2fdc17247 | |
Markus Gärtner | 5620d6b460 | |
Markus Gärtner | 0305d484a3 | |
Daniel Seifert | ba5d8d04af | |
Daniel Seifert | 3d0025cbc9 | |
Daniel Seifert | 4e038ef885 | |
Markus Gärtner | c44887803e | |
Markus Gärtner | 33fe2d8ade | |
Markus Gärtner | ae340f8569 | |
Markus Gärtner | 0c74177b15 | |
LarsStegelitz@Oxid | b8f1c7e8aa | |
LarsStegelitz@Oxid | 64abb3b36f | |
Fabian Vogel | 3acc30a3a5 | |
Gabriel Peleskei | 8926e6618d | |
Gabriel Peleskei | e802847f06 | |
Gabriel Peleskei | bd415ccb3e |
|
@ -19,7 +19,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
||||||
|
## 2.0.8 - 08 September 2023
|
||||||
|
- add check for Amazon Pay - no Captcha
|
||||||
|
|
||||||
|
## 2.0.7 - 08 September 2023
|
||||||
|
- add check for PayPal Checkout - no Captcha
|
||||||
|
|
||||||
|
## 2.0.6 - 18 Juli 2023
|
||||||
|
- don't request captcha if user is logged in
|
||||||
|
|
||||||
## [2.0.4] - 22 Oct 2021
|
## [2.0.4] - 22 Oct 2021
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Article detailed information widget.
|
||||||
|
*/
|
||||||
|
class oeUserComponent extends oeUserComponent_parent
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Class handling CAPTCHA image.
|
||||||
|
*
|
||||||
|
* @var object
|
||||||
|
*/
|
||||||
|
protected $captcha = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template variable getter. Returns object of handling CAPTCHA image
|
||||||
|
*
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
public function getCaptcha()
|
||||||
|
{
|
||||||
|
if ($this->captcha === null) {
|
||||||
|
$this->captcha = oxNew('oeCaptcha');
|
||||||
|
}
|
||||||
|
return $this->captcha;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createUser()
|
||||||
|
{
|
||||||
|
/* START check for Amazon Pay - no Captcha */
|
||||||
|
ob_start();
|
||||||
|
debug_print_backtrace();
|
||||||
|
$trace = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
if(str_contains($trace, 'initAmazonPayExpress'))
|
||||||
|
{
|
||||||
|
return parent::createUser();
|
||||||
|
}
|
||||||
|
/* END check for Amazon Pay - no Captcha /
|
||||||
|
|
||||||
|
/* START check for PayPal Checkout - no Captcha */
|
||||||
|
if(\OxidEsales\Eshop\Core\Registry::getConfig()->getRequestParameter('fnc') == 'approveOrder')
|
||||||
|
{
|
||||||
|
return parent::createUser();
|
||||||
|
}
|
||||||
|
/* START check for PayPal Checkout - no Captcha */
|
||||||
|
|
||||||
|
if (!$this->getCaptcha()->passCaptcha()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::createUser();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
[{$smarty.block.parent}]
|
||||||
|
|
||||||
|
[{include file="oecaptcha_wave.tpl" labelCssClass="control-label col-lg-2" inputCssClass="col-lg-5"}]
|
|
@ -0,0 +1,3 @@
|
||||||
|
[{$smarty.block.parent}]
|
||||||
|
|
||||||
|
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-2" inputCssClass="col-lg-5"}]
|
|
@ -0,0 +1,3 @@
|
||||||
|
[{$smarty.block.parent}]
|
||||||
|
|
||||||
|
[{include file="oecaptcha_wave.tpl" labelCssClass="control-label col-lg-2" inputCssClass="col-lg-5"}]
|
|
@ -0,0 +1,5 @@
|
||||||
|
[{$smarty.block.parent}]
|
||||||
|
|
||||||
|
[{if !$oxcmp_user}]
|
||||||
|
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-3" inputCssClass="col-lg-5"}]
|
||||||
|
[{/if}]
|
|
@ -0,0 +1,3 @@
|
||||||
|
[{$smarty.block.parent}]
|
||||||
|
|
||||||
|
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-3" inputCssClass="col-lg-8"}]
|
|
@ -0,0 +1,19 @@
|
||||||
|
[{assign var="oCaptcha" value=$oView->getCaptcha()}]
|
||||||
|
<input type="hidden" name="c_mach" value="[{$oCaptcha->getHash()}]"/>
|
||||||
|
|
||||||
|
<div class="form-group row verify">
|
||||||
|
<label class="req [{$labelCssClass}]" for="c_mac">[{oxmultilang ident="VERIFICATION_CODE"}]</label>
|
||||||
|
|
||||||
|
<div class="[{$inputCssClass}]">
|
||||||
|
<div class="input-group">
|
||||||
|
<span class="input-group-addon" style="padding-right:15px">
|
||||||
|
[{if $oCaptcha->isImageVisible()}]
|
||||||
|
<img src="[{$oCaptcha->getImageUrl()}]" alt="">
|
||||||
|
[{else}]
|
||||||
|
<span class="verificationCode" id="verifyTextCode">[{$oCaptcha->getText()}]</span>
|
||||||
|
[{/if}]
|
||||||
|
</span>
|
||||||
|
<input type="text" data-fieldsize="verify" name="c_mac" value="" class="form-control js-oxValidate js-oxValidate_notEmpty" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||||
|
*/
|
||||||
|
|
||||||
|
class oecaptchaaccountuser extends oecaptchaaccountuser_parent
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Class handling CAPTCHA image.
|
||||||
|
*
|
||||||
|
* @var object
|
||||||
|
*/
|
||||||
|
protected $captcha = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template variable getter. Returns object of handling CAPTCHA image
|
||||||
|
*
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
public function getCaptcha()
|
||||||
|
{
|
||||||
|
if ( $this->captcha === null ) {
|
||||||
|
$this->captcha = oxNew( 'oeCaptcha' );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->captcha;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Article suggestion page.
|
||||||
|
* Collects some article base information, sets default recomendation text,
|
||||||
|
* sends suggestion mail to user.
|
||||||
|
*/
|
||||||
|
class oeCaptchaRegister extends oeCaptchaRegister_parent
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Class handling CAPTCHA image.
|
||||||
|
*
|
||||||
|
* @var object
|
||||||
|
*/
|
||||||
|
protected $captcha = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends product suggestion mail and returns a URL according to
|
||||||
|
* URL formatting rules.
|
||||||
|
*
|
||||||
|
* Template variables:
|
||||||
|
* <b>editval</b>, <b>error</b>
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function send()
|
||||||
|
{
|
||||||
|
// spam spider prevension
|
||||||
|
if (!$this->getCaptcha()->passCaptcha()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::send();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template variable getter. Returns object of handling CAPTCHA image
|
||||||
|
*
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
public function getCaptcha()
|
||||||
|
{
|
||||||
|
if ($this->captcha === null) {
|
||||||
|
$this->captcha = oxNew('oeCaptcha');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->captcha;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Article suggestion page.
|
||||||
|
* Collects some article base information, sets default recomendation text,
|
||||||
|
* sends suggestion mail to user.
|
||||||
|
*/
|
||||||
|
class oeCaptchaUser extends oeCaptchaUser_parent
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Class handling CAPTCHA image.
|
||||||
|
*
|
||||||
|
* @var object
|
||||||
|
*/
|
||||||
|
protected $captcha = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends product suggestion mail and returns a URL according to
|
||||||
|
* URL formatting rules.
|
||||||
|
*
|
||||||
|
* Template variables:
|
||||||
|
* <b>editval</b>, <b>error</b>
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function send()
|
||||||
|
{
|
||||||
|
// spam spider prevension
|
||||||
|
if (!$this->getCaptcha()->passCaptcha()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::send();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template variable getter. Returns object of handling CAPTCHA image
|
||||||
|
*
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
public function getCaptcha()
|
||||||
|
{
|
||||||
|
if ($this->captcha === null) {
|
||||||
|
$this->captcha = oxNew('oeCaptcha');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->captcha;
|
||||||
|
}
|
||||||
|
}
|
79
metadata.php
79
metadata.php
|
@ -17,6 +17,10 @@
|
||||||
/**
|
/**
|
||||||
* Metadata version
|
* Metadata version
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use OxidEsales\Eshop\Application\Component\UserComponent;
|
||||||
|
use OxidEsales\Eshop\Application\Controller\AccountUserController;
|
||||||
|
|
||||||
$sMetadataVersion = '1.1';
|
$sMetadataVersion = '1.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,9 +37,9 @@ $aModule = array(
|
||||||
'en' => 'OXID eSales Simple Captcha Module',
|
'en' => 'OXID eSales Simple Captcha Module',
|
||||||
),
|
),
|
||||||
'thumbnail' => 'out/pictures/picture.png',
|
'thumbnail' => 'out/pictures/picture.png',
|
||||||
'version' => '2.0.4',
|
'version' => '2.0.8',
|
||||||
'author' => 'OXID eSales AG',
|
'author' => 'OXID eSales AG',
|
||||||
'url' => 'http://www.oxid-esales.com/',
|
'url' => 'https://www.oxid-esales.com/',
|
||||||
'email' => '',
|
'email' => '',
|
||||||
'extend' => array('details' => 'oe/captcha/controllers/oecaptchadetails',
|
'extend' => array('details' => 'oe/captcha/controllers/oecaptchadetails',
|
||||||
'contact' => 'oe/captcha/controllers/oecaptchacontact',
|
'contact' => 'oe/captcha/controllers/oecaptchacontact',
|
||||||
|
@ -44,21 +48,78 @@ $aModule = array(
|
||||||
'newsletter' => 'oe/captcha/controllers/oecaptchanewsletter',
|
'newsletter' => 'oe/captcha/controllers/oecaptchanewsletter',
|
||||||
'pricealarm' => 'oe/captcha/controllers/oecaptchapricealarm',
|
'pricealarm' => 'oe/captcha/controllers/oecaptchapricealarm',
|
||||||
'suggest' => 'oe/captcha/controllers/oecaptchasuggest',
|
'suggest' => 'oe/captcha/controllers/oecaptchasuggest',
|
||||||
'oxwarticledetails' => 'oe/captcha/application/component/widget/oecaptchawarticledetails'),
|
'oxwarticledetails' => 'oe/captcha/application/component/widget/oecaptchawarticledetails',
|
||||||
|
UserComponent::class => 'oe/captcha/application/component/oeusercomponent',
|
||||||
|
'register' => 'oe/captcha/controllers/oecaptcharegister',
|
||||||
|
'user' => 'oe/captcha/controllers/oecaptchauser',
|
||||||
|
AccountUserController::class => 'oe/captcha/controllers/oecaptchaaccountuser'
|
||||||
|
),
|
||||||
'files' => array(
|
'files' => array(
|
||||||
'oecaptcha' => 'oe/captcha/core/oecaptcha.php',
|
'oecaptcha' => 'oe/captcha/core/oecaptcha.php',
|
||||||
'oecaptchaEvents' => 'oe/captcha/core/oecaptchaevents.php',
|
'oecaptchaEvents' => 'oe/captcha/core/oecaptchaevents.php',
|
||||||
),
|
),
|
||||||
'templates' => array(
|
'templates' => array(
|
||||||
'oecaptcha.tpl' => 'oe/captcha/application/views/tpl/oecaptcha.tpl',
|
'oecaptcha.tpl' => 'oe/captcha/application/views/tpl/oecaptcha.tpl',
|
||||||
|
'oecaptcha_wave.tpl' => 'oe/captcha/application/views/tpl/oecaptcha_wave.tpl',
|
||||||
),
|
),
|
||||||
'blocks' => array(
|
'blocks' => array(
|
||||||
array('template' => 'form/contact.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
array('template' => 'form/contact.tpl',
|
||||||
array('template' => 'form/newsletter.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
'block'=>'captcha_form',
|
||||||
array('template' => 'form/privatesales/invite.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
'theme' => 'flow',
|
||||||
array('template' => 'form/pricealarm.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
array('template' => 'form/suggest.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
array('template' => 'form/newsletter.tpl',
|
||||||
array('template' => 'form/forgotpwd_email.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form_forgotpwd.tpl'),
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
|
array('template' => 'form/privatesales/invite.tpl',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
|
array('template' => 'form/pricealarm.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
|
array('template' => 'form/suggest.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
|
array('template' => 'form/forgotpwd_email.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_forgotpwd.tpl'),
|
||||||
|
array('template' => 'form/fieldset/user_billing.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'flow',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||||
|
|
||||||
|
array('template' => 'form/contact.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_contact_wave.tpl'),
|
||||||
|
array('template' => 'form/newsletter.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_newsletter_wave.tpl'),
|
||||||
|
array('template' => 'form/privatesales/invite.tpl',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_wave.tpl'),
|
||||||
|
array('template' => 'form/pricealarm.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_wave.tpl'),
|
||||||
|
array('template' => 'form/suggest.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_wave.tpl'),
|
||||||
|
array('template' => 'form/forgotpwd_email.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_forgotpwd_wave.tpl'),
|
||||||
|
array('template' => 'form/fieldset/user_billing.tpl',
|
||||||
|
'block'=>'captcha_form',
|
||||||
|
'theme' => 'wave',
|
||||||
|
'file'=>'/application/views/blocks/captcha_form_user_billing_wave.tpl'),
|
||||||
),
|
),
|
||||||
'settings' => array(
|
'settings' => array(
|
||||||
array('group' => 'main', 'name' => 'oecaptchakey', 'type' => 'str', 'value' => ''),
|
array('group' => 'main', 'name' => 'oecaptchakey', 'type' => 'str', 'value' => ''),
|
||||||
|
|
Laden…
In neuem Issue referenzieren