-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
1,674 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
<?php | ||
|
||
class Magecomp_Recaptcha_Helper_Data extends Mage_Core_Helper_Abstract | ||
{ | ||
const RECAPTCHA_ENABLE = 'grecaptcha/general/magecomp_select'; | ||
const SITEKEY = 'grecaptcha/general/sitekey'; | ||
const SECRETKEY = 'grecaptcha/general/secretkey'; | ||
const RECAPTCHA_THEME = 'grecaptcha/general/recaptcha_theme'; | ||
const RECAPTCHA_CATEGORY = 'grecaptcha/general/recaptcha_category'; | ||
|
||
public function isEnabled() | ||
{ | ||
return (bool)Mage::getStoreConfig(self::RECAPTCHA_ENABLE); | ||
} | ||
|
||
public function getKey() | ||
{ | ||
return Mage::getStoreConfig(self::SITEKEY); | ||
} | ||
|
||
public function getSecretkey() | ||
{ | ||
return Mage::getStoreConfig(self::SECRETKEY); | ||
} | ||
|
||
public function showOnContact() | ||
{ | ||
if ($this->isEnabled()) { | ||
return self::getEnabledPage(0); | ||
} | ||
} | ||
|
||
public function showOnReview() | ||
{ | ||
if ($this->isEnabled()) { | ||
return self::getEnabledPage(1); | ||
} | ||
} | ||
|
||
public function showOnRegister() | ||
{ | ||
if ($this->isEnabled()) { | ||
return self::getEnabledPage(2); | ||
} | ||
} | ||
|
||
public function showOnOnepage() | ||
{ | ||
if ($this->isEnabled()) { | ||
return self::getEnabledPage(3); | ||
} | ||
} | ||
public function showOnLogin() | ||
{ | ||
if ($this->isEnabled()) | ||
{ | ||
return self::getEnabledPage(4); | ||
} | ||
} | ||
public function showOnNewsletter() | ||
{ | ||
if ($this->isEnabled()) | ||
{ | ||
return self::getEnabledPage(5); | ||
} | ||
} | ||
|
||
public function showadminlogin() | ||
{ | ||
if ($this->isEnabled()) | ||
{ | ||
return self::getEnabledPage(6); | ||
} | ||
} | ||
|
||
public function getTheme() | ||
{ | ||
if ($this->isEnabled()) { | ||
if ((Mage::getStoreConfig(self::RECAPTCHA_THEME)) == 0) { | ||
return "light"; | ||
} else { | ||
return "dark"; | ||
} | ||
} | ||
} | ||
|
||
public function getEnabledPage($value) | ||
{ | ||
$enablepage = Mage::getStoreConfig(self::RECAPTCHA_CATEGORY); | ||
$enablepage = explode(",", $enablepage); | ||
if (in_array($value, $enablepage)) | ||
return true; | ||
else | ||
return false; | ||
} | ||
|
||
public function Validate_captcha($response) | ||
{ | ||
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $this->getSecretkey() . '&response=' . $response); | ||
$responseData = json_decode($verifyResponse); | ||
if ($responseData->success): | ||
return true; | ||
else: | ||
return false; | ||
endif; | ||
} | ||
|
||
} |
195 changes: 195 additions & 0 deletions
195
src/app/code/local/Magecomp/Recaptcha/Model/Observer.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
<?php | ||
|
||
class Magecomp_Recaptcha_Model_Observer | ||
{ | ||
public function Customercreate($observer) | ||
{ | ||
try { | ||
if(Mage::app()->getRequest()->getRouteName()!="adminhtml") | ||
{ | ||
if (Mage::helper('recaptcha/data')->showOnRegister()) { | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
$observer->getEvent()->setData(null); | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
} | ||
} catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
public function Login($observer) | ||
{ | ||
try { | ||
if (Mage::helper('recaptcha/data')->showOnLogin()) | ||
{ | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box '); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
$observer->getEvent()->setData(null); | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box '); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
}catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
|
||
} | ||
public function Newslettersubmit($observer) | ||
{ | ||
try { | ||
$postdata = Mage::app()->getRequest()->getParams(); | ||
if(!array_key_exists('is_subscribed',$postdata)) : | ||
if (Mage::helper('recaptcha/data')->showOnNewsletter()) | ||
{ | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
$observer->getEvent()->setData(null); | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
endif; | ||
}catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
public function adminloginsubmit($observer) | ||
{ | ||
try { | ||
if (Mage::helper('recaptcha/data')->showadminlogin()) | ||
{ | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
$observer->getEvent()->setData(null); | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
}catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
public function Reviewsubmit() | ||
{ | ||
try { | ||
if (Mage::helper('recaptcha/data')->showOnReview()) { | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
} catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
public function Contactsubmit() | ||
{ | ||
try { | ||
if (Mage::helper('recaptcha/data')->showOnContact()) { | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
} catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
public function Savebilling() | ||
{ | ||
try { | ||
if (Mage::helper('recaptcha/data')->showOnOnepage()) { | ||
$g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response'); | ||
if (isset($g_response) && !empty($g_response)): | ||
if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))): | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
else: | ||
Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.'); | ||
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl(); | ||
Mage::app()->getFrontController()->getResponse()->setRedirect($url); | ||
Mage::app()->getResponse()->sendResponse(); | ||
exit; | ||
endif; | ||
} | ||
} catch (Exception $e) { | ||
Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log"); | ||
} | ||
} | ||
} | ||
?> |
15 changes: 15 additions & 0 deletions
15
src/app/code/local/Magecomp/Recaptcha/Model/Source/Pagessource.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?php | ||
class Magecomp_Recaptcha_Model_Source_Pagessource{ | ||
public function toOptionArray(){ | ||
return array( | ||
array('value'=>'0','label'=>'Contact Form'), | ||
array('value'=>'1','label'=>'Review Form'), | ||
array('value'=>'2','label'=>'Register Form'), | ||
array('value'=>'3','label'=>'Onepage Checkout'), | ||
array('value'=>'4','label'=>'Customer Login'), | ||
array('value'=>'5','label'=>'Newsletter'), | ||
array('value'=>'6','label'=>'Admin Login') | ||
); | ||
} | ||
} | ||
?> |
10 changes: 10 additions & 0 deletions
10
src/app/code/local/Magecomp/Recaptcha/Model/Source/Themesource.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?php | ||
class Magecomp_Recaptcha_Model_Source_Themesource{ | ||
public function toOptionArray(){ | ||
return array( | ||
array('value'=>'0','label'=>'Light'), | ||
array('value'=>'1','label'=>'Dark'), | ||
); | ||
} | ||
} | ||
?> |
Oops, something went wrong.