Skip to content

Commit

Permalink
#1546 improved OOC for existing reCAPTCHA methods
Browse files Browse the repository at this point in the history
  • Loading branch information
abrookbanks committed Mar 9, 2017
1 parent 17869ff commit e2d72da
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 56 deletions.
2 changes: 1 addition & 1 deletion admin/sources/settings.index.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@
'proxy' => null,
'recaptcha' => array($lang['common']['disabled'], $lang['common']['enabled']),
'catalogue_sale_mode' => array($lang['common']['disabled'], $lang['settings']['sales_per_product'], $lang['settings']['sales_percentage']),
'recaptcha' => array(0 => "Off", 1 => "reCAPTCHA", 2 => $lang['common']['new']." reCAPTCHA (".$lang['common']['recommended'].')'),
'recaptcha' => array(0 => "Off", 1 => "reCAPTCHA v1 (".$lang['common']['not_recommended'].")", 2 => "reCAPTCHA v2", 3 => 'Invisible reCAPTCHA ('.$lang['common']['recommended'].')'),
'seo_metadata' => array($lang['settings']['seo_meta_option_disable'], $lang['settings']['seo_meta_option_merge'], $lang['settings']['seo_meta_option_replace']),
'basket_allow_non_invoice_address' => null,
'catalogue_latest_products' => null,
Expand Down
61 changes: 9 additions & 52 deletions classes/cubecart.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,7 @@ private function _checkout() {
$GLOBALS['gui']->setNotify($GLOBALS['language']->account["notify_address_updated"]);
}

if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
if ($GLOBALS['gui']->recaptchaRequired()) {
if (($message = $GLOBALS['session']->get('error', 'recaptcha')) === false) {
//If the error message from recaptcha fails for some reason:
$error_messages[] = $GLOBALS['language']->form['verify_human_fail'];
Expand Down Expand Up @@ -1148,19 +1148,7 @@ private function _checkout() {
foreach ($GLOBALS['hooks']->load('class.cubecart.prerecaptcha.confirm') as $hook) include $hook;

if (!isset($this->_basket['recaptcha'])) {
$recaptcha = $GLOBALS['config']->get('config', 'recaptcha');
if($recaptcha==2) {
$GLOBALS['smarty']->assign('RECAPTCHA', $recaptcha);
} else {
$GLOBALS['smarty']->assign('LANG_RECAPTCHA', array(
'reload_words' => sprintf($GLOBALS['language']->recaptcha['reload_words'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('audio')"),
'reload_numbers' => sprintf($GLOBALS['language']->recaptcha['reload_numbers'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('image')"),
));
if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
$GLOBALS['smarty']->assign('DISPLAY_RECAPTCHA', recaptcha_get_html($GLOBALS['recaptcha_keys']['captcha_public'], $GLOBALS['recaptcha']['error'], CC_SSL));
$GLOBALS['smarty']->assign('RECAPTCHA', true);
}
}
$GLOBALS['gui']->recaptchaAssign();
}
$GLOBALS['smarty']->assign('TERMS_CONDITIONS', (!$GLOBALS['config']->get('config', 'disable_checkout_terms') && $terms = $GLOBALS['db']->select('CubeCart_documents', false, array('doc_terms' => '1'))) ? $GLOBALS['seo']->buildURL('doc', $terms[0]['doc_id'], '&') : false);
if (isset($_POST['terms_agree']) && $_POST['terms_agree']==1) {
Expand Down Expand Up @@ -1400,7 +1388,7 @@ private function _contact() {
}

// reCAPTCHA, if enabled
if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
if ($GLOBALS['gui']->recaptchaRequired()) {
if (($message = $GLOBALS['session']->get('error', 'recaptcha')) === false) {
//If the error message from recaptcha fails for some reason:
$GLOBALS['gui']->setError($GLOBALS['language']->form['verify_human_fail']);
Expand Down Expand Up @@ -1453,18 +1441,8 @@ private function _contact() {
$GLOBALS['smarty']->assign('DEPARTMENTS', $vars['departments']);
}

if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
$recaptcha = $GLOBALS['config']->get('config', 'recaptcha');
if($recaptcha==2) {
$GLOBALS['smarty']->assign('RECAPTCHA', $recaptcha);
} else {
$GLOBALS['smarty']->assign('LANG_RECAPTCHA', array(
'reload_words' => sprintf($GLOBALS['language']->recaptcha['reload_words'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('audio')"),
'reload_numbers' => sprintf($GLOBALS['language']->recaptcha['reload_numbers'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('image')"),
));
$GLOBALS['smarty']->assign('DISPLAY_RECAPTCHA', recaptcha_get_html($GLOBALS['recaptcha_keys']['captcha_public'], $GLOBALS['session']->get('error', 'recaptcha'), CC_SSL));
$GLOBALS['smarty']->assign('RECAPTCHA', true);
}
if ($GLOBALS['gui']->recaptchaRequired()) {
$GLOBALS['gui']->recaptchaAssign();
}
foreach ($GLOBALS['hooks']->load('class.cubecart.contact.display') as $hook) include $hook;
$content = $GLOBALS['smarty']->fetch('templates/content.contact.php');
Expand Down Expand Up @@ -2657,19 +2635,8 @@ private function _profile() {
* @param bool $force
*/
private function _recaptcha($force = false) {
if ($force || (!$GLOBALS['user']->is() && $GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha'))) {

$recaptcha = $GLOBALS['config']->get('config', 'recaptcha');
if($recaptcha==2) {
$GLOBALS['smarty']->assign('RECAPTCHA', $recaptcha);
} else {
$GLOBALS['smarty']->assign('LANG_RECAPTCHA', array(
'reload_words' => sprintf($GLOBALS['language']->recaptcha['reload_words'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('audio')"),
'reload_numbers' => sprintf($GLOBALS['language']->recaptcha['reload_numbers'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('image')"),
));
$GLOBALS['smarty']->assign('DISPLAY_RECAPTCHA', recaptcha_get_html($GLOBALS['recaptcha_keys']['captcha_public'], $GLOBALS['recaptcha']['error'], CC_SSL));
$GLOBALS['smarty']->assign('RECAPTCHA', true);
}
if ($force || (!$GLOBALS['user']->is() && $GLOBALS['gui']->recaptchaRequired())) {
$GLOBALS['gui']->recaptchaAssign();
}
}

Expand Down Expand Up @@ -2825,18 +2792,8 @@ private function _register() {

if (!$GLOBALS['user']->is()) {
// Email validation thingy will go here
if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
$recaptcha = $GLOBALS['config']->get('config', 'recaptcha');
if($recaptcha==2) {
$GLOBALS['smarty']->assign('RECAPTCHA', $recaptcha);
} else {
$GLOBALS['smarty']->assign('LANG_RECAPTCHA', array(
'reload_words' => sprintf($GLOBALS['language']->recaptcha['reload_words'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('audio')"),
'reload_numbers' => sprintf($GLOBALS['language']->recaptcha['reload_numbers'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('image')"),
));
$GLOBALS['smarty']->assign('DISPLAY_RECAPTCHA', recaptcha_get_html($GLOBALS['recaptcha_keys']['captcha_public'], $GLOBALS['recaptcha']['error'], CC_SSL));
$GLOBALS['smarty']->assign('RECAPTCHA', true);
}
if ($GLOBALS['gui']->recaptchaRequired()) {
$GLOBALS['gui']->recaptchaAssign();
}
$GLOBALS['smarty']->assign('DATA', $_POST);
if (($terms = $GLOBALS['db']->select('CubeCart_documents', false, array('doc_terms' => '1'))) !== false) {
Expand Down
28 changes: 28 additions & 0 deletions classes/gui.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,34 @@ public function perPageSplits($list_id = 'products', $page_key = 'perpage') {
return false;
}

/**
* Require Recaptcha Check
*/
public function recaptchaRequired() {
if($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
return true;
}
return false;
}

/**
* Assign Legacy Recaptcha HTML
*/
public function recaptchaAssign() {
if($GLOBALS['config']->get('config', 'recaptcha')==2) {
$GLOBALS['smarty']->assign('RECAPTCHA', 2);
} else {
$GLOBALS['smarty']->assign('LANG_RECAPTCHA', array(
'reload_words' => sprintf($GLOBALS['language']->recaptcha['reload_words'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('audio')"),
'reload_numbers' => sprintf($GLOBALS['language']->recaptcha['reload_numbers'], 'javascript:Recaptcha.reload()', "javascript:Recaptcha.switch_type('image')"),
));
if ($GLOBALS['gui']->recaptchaRequired()) {
$GLOBALS['smarty']->assign('DISPLAY_RECAPTCHA', recaptcha_get_html($GLOBALS['recaptcha_keys']['captcha_public'], $GLOBALS['recaptcha']['error'], CC_SSL));
$GLOBALS['smarty']->assign('RECAPTCHA', true);
}
}
}

/**
* Rebuild logo
*/
Expand Down
2 changes: 1 addition & 1 deletion classes/user.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ public function registerUser() {
$error['name'] = true;
}

if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
if ($GLOBALS['gui']->recaptchaRequired()) {
if (($message = $GLOBALS['session']->get('error', 'recaptcha')) === false) {
//If the error message from recaptcha fails for some reason:
$GLOBALS['gui']->setError($GLOBALS['language']->form['verify_human_fail']);
Expand Down
2 changes: 1 addition & 1 deletion controllers/controller.index.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@

// Set store timezone - default to UTC
date_default_timezone_set(($GLOBALS['config']->get('config', 'time_zone')) ? $GLOBALS['config']->get('config', 'time_zone') : 'UTC');
if ($GLOBALS['config']->get('config', 'recaptcha') && !$GLOBALS['session']->get('confirmed', 'recaptcha')) {
if ($GLOBALS['gui']->recaptchaRequired()) {

$recaptcha['error'] = null;
$recaptcha['confirmed'] = false;
Expand Down
3 changes: 2 additions & 1 deletion language/definitions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@
<string name="your_basket" introduced="5.0.0"><![CDATA[Your Shopping Basket]]></string>
</group>
<group name="common">
<string name="not_recommended" introduced="6.1.6"><![CDATA[Not Recommended]]></string>
<string name="none" introduced="6.1.5"><![CDATA[None]]></string>
<string name="read_ltr" introduced="6.1.2"><![CDATA[Left-to-Right]]></string>
<string name="read_rtl" introduced="6.1.2"><![CDATA[Right-to-Left]]></string>
Expand Down Expand Up @@ -1900,7 +1901,7 @@
<string name="proxy_port" introduced="5.0.0"><![CDATA[Proxy Port]]></string>
<string name="proxy_user" introduced="5.0.0"><![CDATA[Proxy Username]]></string>
<string name="recaptcha_enable" introduced="5.0.0"><![CDATA[Enable <a href="https://www.google.com/recaptcha/intro/index.html" target="_blank">reCAPTCHA</a>]]></string>
<string name="new_recaptcha_note" introduced="6.0.0"><![CDATA[If &quot;New reCAPTCHA&quot; is selected you must obtain a Site Key and Secret Key <a href="https://www.google.com/recaptcha/admin" target="_blank">from Google</a> for it to work.]]></string>
<string name="new_recaptcha_note" introduced="6.0.0"><![CDATA[If &quot;reCAPTCHA v2&quot; or &quot;Invisible reCAPTCHA&quot; are selected you must obtain a Site Key and Secret Key <a href="https://www.google.com/recaptcha/admin" target="_blank">from Google</a> for it to work. Please note that if your store has a skin developed prior to CubeCart version 6 v2 and Invisible probably won't work. Please contact support.]]></string>
<string name="recaptcha_public_key" introduced="6.0.0"><![CDATA[reCAPTCHA Site Key]]></string>
<string name="recaptcha_secret_key" introduced="6.0.0"><![CDATA[reCAPTCHA Secret Key]]></string>
<string name="repair" introduced="5.0.0"><![CDATA[Repair]]></string>
Expand Down

0 comments on commit e2d72da

Please sign in to comment.