Mirror von
https://git.d3data.de/3rdParty/captcha-module.git
synchronisiert 2024-10-31 20:34:38 +01:00
Commits vergleichen
Keine gemeinsamen Commits. "master" und "v2.0.0" haben vollständig unterschiedliche Historien.
31
CHANGELOG.md
31
CHANGELOG.md
@ -19,37 +19,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
### Security
|
||||
|
||||
## 2.0.9 - 25 Juni 2024
|
||||
- add check $oCaptcha in templates
|
||||
|
||||
## 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
|
||||
|
||||
changed:
|
||||
- PHP 7.4/8.0 compatibility https://github.com/OXIDprojects/captcha-module/issues/7
|
||||
- fix metadata version number
|
||||
|
||||
## [2.0.3] - 10 Dec 2020
|
||||
|
||||
changed: insert Captcha also in the forgotten password form and newsletter subscription
|
||||
|
||||
## [2.0.2] - 10 Jan 2020
|
||||
|
||||
changed: moved code to its own template file and changed markup to match flow …
|
||||
|
||||
## [2.0.1] - 2017-12-07
|
||||
|
||||
### Added
|
||||
- Module available on packagist
|
||||
|
||||
## [2.0.0] - 2017-12-05
|
||||
|
||||
### Changed
|
||||
|
@ -25,7 +25,8 @@ In order to install the module via composer, run the following commands in comma
|
||||
(where the shop's composer.json file resides).
|
||||
|
||||
```
|
||||
composer require oxid-projects/captcha-module
|
||||
composer config repositories.oxid-esales/captcha-module vcs https://github.com/OXIDprojects/captcha-module
|
||||
composer require oxid-esales/captcha-module:dev-master
|
||||
```
|
||||
|
||||
### Module installation via repository cloning
|
||||
|
@ -1,58 +0,0 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
@ -1,3 +1,18 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha.tpl" labelCssClass="col-lg-2" inputCssClass="col-lg-10"}]
|
||||
[{assign var="oCaptcha" value=$oView->getCaptcha()}]
|
||||
<input type="hidden" name="c_mach" value="[{$oCaptcha->getHash()}]"/>
|
||||
|
||||
<li class="verify">
|
||||
<label class="req">[{oxmultilang ident="VERIFICATION_CODE" suffix="COLON"}]</label>
|
||||
[{assign var="oCaptcha" value=$oView->getCaptcha()}]
|
||||
[{if $oCaptcha->isImageVisible()}]
|
||||
<img src="[{$oCaptcha->getImageUrl()}]" alt="">
|
||||
[{else}]
|
||||
<span class="verificationCode" id="verifyTextCode">[{$oCaptcha->getText()}]</span>
|
||||
[{/if}]
|
||||
<input type="text" data-fieldsize="verify" name="c_mac" value="" class="js-oxValidate js-oxValidate_notEmpty">
|
||||
<p class="oxValidateError">
|
||||
<span class="js-oxError_notEmpty">[{oxmultilang ident="ERROR_MESSAGE_INPUT_NOTALLFIELDS"}]</span>
|
||||
</p>
|
||||
</li>
|
||||
|
@ -1,3 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha_wave.tpl" labelCssClass="control-label col-lg-2" inputCssClass="col-lg-5"}]
|
@ -1,3 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha.tpl" labelCssClass="col-md-3" inputCssClass="col-md-9"}]
|
@ -1,3 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-2" inputCssClass="col-lg-5"}]
|
@ -1,3 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha_wave.tpl" labelCssClass="control-label col-lg-2" inputCssClass="col-lg-5"}]
|
@ -1,5 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{if !$oxcmp_user}]
|
||||
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-3" inputCssClass="col-lg-5"}]
|
||||
[{/if}]
|
@ -1,3 +0,0 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{include file="oecaptcha_wave.tpl" labelCssClass="col-lg-3" inputCssClass="col-lg-8"}]
|
@ -1,21 +0,0 @@
|
||||
[{assign var="oCaptcha" value=$oView->getCaptcha()}]
|
||||
[{if $oCaptcha}]
|
||||
<input type="hidden" name="c_mach" value="[{$oCaptcha->getHash()}]"/>
|
||||
|
||||
<div class="form-group verify">
|
||||
<label class="req control-label [{$labelCssClass}]" for="c_mac">[{oxmultilang ident="VERIFICATION_CODE"}]</label>
|
||||
|
||||
<div class="[{$inputCssClass}] controls">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">
|
||||
[{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>
|
||||
[{/if}]
|
@ -1,21 +0,0 @@
|
||||
[{assign var="oCaptcha" value=$oView->getCaptcha()}]
|
||||
[{if $oCaptcha}]
|
||||
<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>
|
||||
[{/if}]
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "oxid-projects/captcha-module",
|
||||
"name": "oxid-esales/captcha-module",
|
||||
"description": "This is Captcha module for OXID eShop.",
|
||||
"type": "oxideshop-module",
|
||||
"keywords": ["oxid", "modules", "eShop", "captcha"],
|
||||
|
@ -1,29 +0,0 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||
*/
|
||||
|
||||
class oeCaptchaForgotPwd extends oeCaptchaForgotPwd_parent
|
||||
{
|
||||
/**
|
||||
* Class handling CAPTCHA image.
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
protected $captcha = null;
|
||||
|
||||
/**
|
||||
* Composes and sends user written message, returns false if some parameters
|
||||
* are missing.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function forgotpassword()
|
||||
{
|
||||
if (!$this->getCaptcha()->passCaptcha()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return parent::forgotpassword();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* #PHPHEADER_OECAPTCHA_LICENSE_INFORMATION#
|
||||
*/
|
||||
|
||||
class oeCaptchaNewsletter extends oeCaptchaNewsletter_parent
|
||||
{
|
||||
/**
|
||||
* Class handling CAPTCHA image.
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
protected $captcha = null;
|
||||
|
||||
/**
|
||||
* Composes and sends user written message, returns false if some parameters
|
||||
* are missing.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function send()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
@ -50,7 +50,7 @@ class oeCaptcha extends oxSuperCfg
|
||||
if (!$this->text) {
|
||||
$this->text = '';
|
||||
for ($i = 0; $i < $this->macLength; $i++) {
|
||||
$this->text .= strtolower($this->macChars[rand(0, strlen($this->macChars) - 1)]);
|
||||
$this->text .= strtolower($this->macChars{rand(0, strlen($this->macChars) - 1)});
|
||||
}
|
||||
}
|
||||
|
||||
|
83
metadata.php
83
metadata.php
@ -17,10 +17,6 @@
|
||||
/**
|
||||
* Metadata version
|
||||
*/
|
||||
|
||||
use OxidEsales\Eshop\Application\Component\UserComponent;
|
||||
use OxidEsales\Eshop\Application\Controller\AccountUserController;
|
||||
|
||||
$sMetadataVersion = '1.1';
|
||||
|
||||
/**
|
||||
@ -37,89 +33,26 @@ $aModule = array(
|
||||
'en' => 'OXID eSales Simple Captcha Module',
|
||||
),
|
||||
'thumbnail' => 'out/pictures/picture.png',
|
||||
'version' => '2.0.9',
|
||||
'version' => '2.0.0',
|
||||
'author' => 'OXID eSales AG',
|
||||
'url' => 'https://www.oxid-esales.com/',
|
||||
'url' => 'http://www.oxid-esales.com/',
|
||||
'email' => '',
|
||||
'extend' => array('details' => 'oe/captcha/controllers/oecaptchadetails',
|
||||
'contact' => 'oe/captcha/controllers/oecaptchacontact',
|
||||
'forgotpwd' => 'oe/captcha/controllers/oecaptchaforgotpwd',
|
||||
'invite' => 'oe/captcha/controllers/oecaptchainvite',
|
||||
'newsletter' => 'oe/captcha/controllers/oecaptchanewsletter',
|
||||
'pricealarm' => 'oe/captcha/controllers/oecaptchapricealarm',
|
||||
'suggest' => 'oe/captcha/controllers/oecaptchasuggest',
|
||||
'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'
|
||||
),
|
||||
'oxwarticledetails' => 'oe/captcha/application/component/widget/oecaptchawarticledetails'),
|
||||
'files' => array(
|
||||
'oecaptcha' => 'oe/captcha/core/oecaptcha.php',
|
||||
'oecaptchaEvents' => 'oe/captcha/core/oecaptchaevents.php',
|
||||
),
|
||||
'templates' => array(
|
||||
'oecaptcha.tpl' => 'oe/captcha/application/views/tpl/oecaptcha.tpl',
|
||||
'oecaptcha_wave.tpl' => 'oe/captcha/application/views/tpl/oecaptcha_wave.tpl',
|
||||
),
|
||||
'templates' => array(),
|
||||
'blocks' => array(
|
||||
array('template' => 'form/contact.tpl',
|
||||
'block'=>'captcha_form',
|
||||
'theme' => 'flow',
|
||||
'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||
array('template' => 'form/newsletter.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'),
|
||||
array('template' => 'form/contact.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||
array('template' => 'form/privatesales/invite.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||
array('template' => 'form/pricealarm.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||
array('template' => 'form/suggest.tpl', 'block'=>'captcha_form', 'file'=>'/application/views/blocks/captcha_form.tpl'),
|
||||
),
|
||||
'settings' => array(
|
||||
array('group' => 'main', 'name' => 'oecaptchakey', 'type' => 'str', 'value' => ''),
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren