#!/bin/bash # Patch apllying tool template # v0.1.2 # (c) Copyright 2013. Magento Inc. # # DO NOT CHANGE ANY LINE IN THIS FILE. # 1. Check required system tools _check_installed_tools() { local missed="" until [ -z "$1" ]; do type -t $1 >/dev/null 2>/dev/null if (( $? != 0 )); then missed="$missed $1" fi shift done echo $missed } REQUIRED_UTILS='sed patch' MISSED_REQUIRED_TOOLS=`_check_installed_tools $REQUIRED_UTILS` if (( `echo $MISSED_REQUIRED_TOOLS | wc -w` > 0 )); then echo -e "Error! Some required system tools, that are utilized in this sh script, are not installed:\nTool(s) \"$MISSED_REQUIRED_TOOLS\" is(are) missed, please install it(them)." exit 1 fi # 2. Determine bin path for system tools CAT_BIN=`which cat` PATCH_BIN=`which patch` SED_BIN=`which sed` PWD_BIN=`which pwd` BASENAME_BIN=`which basename` BASE_NAME=`$BASENAME_BIN "$0"` # 3. Help menu if [ "$1" = "-?" -o "$1" = "-h" -o "$1" = "--help" ] then $CAT_BIN << EOFH Usage: sh $BASE_NAME [--help] [-R|--revert] [--list] Apply embedded patch. -R, --revert Revert previously applied embedded patch --list Show list of applied patches --help Show this help message EOFH exit 0 fi # 4. Get "revert" flag and "list applied patches" flag REVERT_FLAG= SHOW_APPLIED_LIST=0 if [ "$1" = "-R" -o "$1" = "--revert" ] then REVERT_FLAG=-R fi if [ "$1" = "--list" ] then SHOW_APPLIED_LIST=1 fi # 5. File pathes CURRENT_DIR=`$PWD_BIN`/ APP_ETC_DIR=`echo "$CURRENT_DIR""app/etc/"` APPLIED_PATCHES_LIST_FILE=`echo "$APP_ETC_DIR""applied.patches.list"` # 6. Show applied patches list if requested if [ "$SHOW_APPLIED_LIST" -eq 1 ] ; then echo -e "Applied/reverted patches list:" if [ -e "$APPLIED_PATCHES_LIST_FILE" ] then if [ ! -r "$APPLIED_PATCHES_LIST_FILE" ] then echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be readable so applied patches list can be shown." exit 1 else $SED_BIN -n "/SUP-\|SUPEE-/p" $APPLIED_PATCHES_LIST_FILE fi else echo "" fi exit 0 fi # 7. Check applied patches track file and its directory _check_files() { if [ ! -e "$APP_ETC_DIR" ] then echo "ERROR: \"$APP_ETC_DIR\" must exist for proper tool work." exit 1 fi if [ ! -w "$APP_ETC_DIR" ] then echo "ERROR: \"$APP_ETC_DIR\" must be writeable for proper tool work." exit 1 fi if [ -e "$APPLIED_PATCHES_LIST_FILE" ] then if [ ! -w "$APPLIED_PATCHES_LIST_FILE" ] then echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be writeable for proper tool work." exit 1 fi fi } _check_files # 8. Apply/revert patch # Note: there is no need to check files permissions for files to be patched. # "patch" tool will not modify any file if there is not enough permissions for all files to be modified. # Get start points for additional information and patch data SKIP_LINES=$((`$SED_BIN -n "/^__PATCHFILE_FOLLOWS__$/=" "$CURRENT_DIR""$BASE_NAME"` + 1)) ADDITIONAL_INFO_LINE=$(($SKIP_LINES - 3))p _apply_revert_patch() { DRY_RUN_FLAG= if [ "$1" = "dry-run" ] then DRY_RUN_FLAG=" --dry-run" echo "Checking if patch can be applied/reverted successfully..." fi PATCH_APPLY_REVERT_RESULT=`$SED_BIN -e '1,/^__PATCHFILE_FOLLOWS__$/d' "$CURRENT_DIR""$BASE_NAME" | $PATCH_BIN $DRY_RUN_FLAG $REVERT_FLAG -p0` PATCH_APPLY_REVERT_STATUS=$? if [ $PATCH_APPLY_REVERT_STATUS -eq 1 ] ; then echo -e "ERROR: Patch can't be applied/reverted successfully.\n\n$PATCH_APPLY_REVERT_RESULT" exit 1 fi if [ $PATCH_APPLY_REVERT_STATUS -eq 2 ] ; then echo -e "ERROR: Patch can't be applied/reverted successfully." exit 2 fi } REVERTED_PATCH_MARK= if [ -n "$REVERT_FLAG" ] then REVERTED_PATCH_MARK=" | REVERTED" fi _apply_revert_patch dry-run _apply_revert_patch # 9. Track patch applying result echo "Patch was applied/reverted successfully." ADDITIONAL_INFO=`$SED_BIN -n ""$ADDITIONAL_INFO_LINE"" "$CURRENT_DIR""$BASE_NAME"` APPLIED_REVERTED_ON_DATE=`date -u +"%F %T UTC"` APPLIED_REVERTED_PATCH_INFO=`echo -n "$APPLIED_REVERTED_ON_DATE"" | ""$ADDITIONAL_INFO""$REVERTED_PATCH_MARK"` echo -e "$APPLIED_REVERTED_PATCH_INFO\n$PATCH_APPLY_REVERT_RESULT\n\n" >> "$APPLIED_PATCHES_LIST_FILE" exit 0 SUPEE-6285 | CE_1.5.1.0 | v1 | 788da6698cfe343868aca72eab0119098b302f81 | Thu Jul 9 19:46:43 2015 +0300 | 2e5eb272f0..788da6698c __PATCHFILE_FOLLOWS__ diff --git app/Mage.php app/Mage.php index 0c765b6..7fb3721 100644 --- app/Mage.php +++ app/Mage.php @@ -718,15 +718,17 @@ final class Mage try { if (!isset($loggers[$file])) { - $logFile = self::getBaseDir('var') . DS . 'log' . DS . $file; + $logDir = self::getBaseDir('var') . DS . 'log'; + $logFile = $logDir . DS . $file; - if (!is_dir(self::getBaseDir('var').DS.'log')) { - mkdir(self::getBaseDir('var').DS.'log', 0777); + if (!is_dir($logDir)) { + mkdir($logDir); + chmod($logDir, 0750); } if (!file_exists($logFile)) { file_put_contents($logFile, ''); - chmod($logFile, 0777); + chmod($logFile, 0640); } $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL; diff --git app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php index c54c2ce..e7aba7d 100644 --- app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php +++ app/code/community/Phoenix/Moneybookers/controllers/MoneybookersController.php @@ -84,4 +84,14 @@ class Phoenix_Moneybookers_MoneybookersController extends Mage_Adminhtml_Control } $this->getResponse()->setBody($response); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('system/config/moneybookers'); + } } diff --git app/code/core/Mage/Adminhtml/Controller/Action.php app/code/core/Mage/Adminhtml/Controller/Action.php index 9093ed6..ef9d18d 100644 --- app/code/core/Mage/Adminhtml/Controller/Action.php +++ app/code/core/Mage/Adminhtml/Controller/Action.php @@ -63,7 +63,7 @@ class Mage_Adminhtml_Controller_Action extends Mage_Core_Controller_Varien_Actio protected function _isAllowed() { - return true; + return Mage::getSingleton('admin/session')->isAllowed('admin'); } /** diff --git app/code/core/Mage/Adminhtml/controllers/AjaxController.php app/code/core/Mage/Adminhtml/controllers/AjaxController.php index 4e60e1c..2f2a905 100644 --- app/code/core/Mage/Adminhtml/controllers/AjaxController.php +++ app/code/core/Mage/Adminhtml/controllers/AjaxController.php @@ -52,4 +52,14 @@ class Mage_Adminhtml_AjaxController extends Mage_Adminhtml_Controller_Action echo Mage::helper('core/translate')->apply($translation, $area); exit(); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return true; + } } diff --git app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php index 05f1b2c..ec24928 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php @@ -69,4 +69,14 @@ class Mage_Adminhtml_Catalog_Category_WidgetController extends Mage_Adminhtml_Co 'use_massaction' => $this->getRequest()->getParam('use_massaction', false) )); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('cms/widget_instance'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php index 543934a..6ebe4b9 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Product/DatafeedsController.php @@ -32,4 +32,14 @@ class Mage_Adminhtml_Catalog_DatafeedsController extends Mage_Adminhtml_Controll { } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return true; + } } diff --git app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php index f7904dc..daad475 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php @@ -352,7 +352,8 @@ class Mage_Adminhtml_Catalog_Product_ReviewController extends Mage_Adminhtml_Con protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'pending': return Mage::getSingleton('admin/session')->isAllowed('catalog/reviews_ratings/reviews/pending'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php index 468f929..b0ec32e 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php @@ -67,4 +67,14 @@ class Mage_Adminhtml_Catalog_Product_WidgetController extends Mage_Adminhtml_Con $this->getResponse()->setBody($html); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('cms/widget_instance'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php index 5ffe7b3..f7159ab 100644 --- app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php +++ app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php @@ -45,4 +45,14 @@ class Mage_Adminhtml_Cms_Block_WidgetController extends Mage_Adminhtml_Controlle )); $this->getResponse()->setBody($pagesGrid->toHtml()); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('cms/widget_instance'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php index 30c83e3..373a55d 100644 --- app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php +++ app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php @@ -45,4 +45,15 @@ class Mage_Adminhtml_Cms_Page_WidgetController extends Mage_Adminhtml_Controller )); $this->getResponse()->setBody($pagesGrid->toHtml()); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('cms/widget_instance'); + } + } diff --git app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php index 14b4536..efa6e31 100644 --- app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php +++ app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php @@ -222,7 +222,8 @@ class Mage_Adminhtml_Cms_PageController extends Mage_Adminhtml_Controller_Action */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'new': case 'save': return Mage::getSingleton('admin/session')->isAllowed('cms/page/save'); diff --git app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php index 8a6f5c2..df8be93 100644 --- app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php +++ app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php @@ -64,4 +64,14 @@ class Mage_Adminhtml_Cms_WysiwygController extends Mage_Adminhtml_Controller_Act */ } } + + /** + * Check the permission to run it + * + * @return boolean + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('cms'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/JsonController.php app/code/core/Mage/Adminhtml/controllers/JsonController.php index 6d554ef..ea9bae1 100644 --- app/code/core/Mage/Adminhtml/controllers/JsonController.php +++ app/code/core/Mage/Adminhtml/controllers/JsonController.php @@ -49,4 +49,14 @@ class Mage_Adminhtml_JsonController extends Mage_Adminhtml_Controller_Action $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($arrRes)); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return true; + } } diff --git app/code/core/Mage/Adminhtml/controllers/NotificationController.php app/code/core/Mage/Adminhtml/controllers/NotificationController.php index 9a3fa51..50bd50a 100644 --- app/code/core/Mage/Adminhtml/controllers/NotificationController.php +++ app/code/core/Mage/Adminhtml/controllers/NotificationController.php @@ -168,12 +168,13 @@ class Mage_Adminhtml_NotificationController extends Mage_Adminhtml_Controller_Ac protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { - case 'markAsRead': + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { + case 'markasread': $acl = 'system/adminnotification/mark_as_read'; break; - case 'massMarkAsRead': + case 'massmarkasread': $acl = 'system/adminnotification/mark_as_read'; break; @@ -181,7 +182,7 @@ class Mage_Adminhtml_NotificationController extends Mage_Adminhtml_Controller_Ac $acl = 'system/adminnotification/remove'; break; - case 'massRemove': + case 'massremove': $acl = 'system/adminnotification/remove'; break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php index 7ecf82f..ae89679 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/CustomerController.php @@ -161,7 +161,8 @@ class Mage_Adminhtml_Report_CustomerController extends Mage_Adminhtml_Controller protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'accounts': return Mage::getSingleton('admin/session')->isAllowed('report/customers/accounts'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php index ab7d970..ffac9cc 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php @@ -265,7 +265,8 @@ class Mage_Adminhtml_Report_ProductController extends Mage_Adminhtml_Controller_ */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'viewed': return Mage::getSingleton('admin/session')->isAllowed('report/products/viewed'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php index bbd312a..febe9e6 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/ReviewController.php @@ -160,7 +160,8 @@ class Mage_Adminhtml_Report_ReviewController extends Mage_Adminhtml_Controller_A protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'customer': return Mage::getSingleton('admin/session')->isAllowed('report/review/customer'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php index a0c2d1c..b3ec3ea 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php @@ -435,7 +435,8 @@ class Mage_Adminhtml_Report_SalesController extends Mage_Adminhtml_Controller_Ac protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'sales': return $this->_getSession()->isAllowed('report/salesroot/sales'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php index be80c84..d5f1e8d 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/ShopcartController.php @@ -155,7 +155,8 @@ class Mage_Adminhtml_Report_ShopcartController extends Mage_Adminhtml_Controller protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'customer': return Mage::getSingleton('admin/session')->isAllowed('report/shopcart/customer'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Report/TagController.php app/code/core/Mage/Adminhtml/controllers/Report/TagController.php index c43fcec..4a5cc90 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/TagController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/TagController.php @@ -282,14 +282,15 @@ class Mage_Adminhtml_Report_TagController extends Mage_Adminhtml_Controller_Acti protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'customer': return Mage::getSingleton('admin/session')->isAllowed('report/tags/customer'); break; case 'product': return Mage::getSingleton('admin/session')->isAllowed('report/tags/product'); break; - case 'productAll': + case 'productall': return Mage::getSingleton('admin/session')->isAllowed('report/tags/product'); break; case 'popular': diff --git app/code/core/Mage/Adminhtml/controllers/ReportController.php app/code/core/Mage/Adminhtml/controllers/ReportController.php index d5f6607..8c28647 100644 --- app/code/core/Mage/Adminhtml/controllers/ReportController.php +++ app/code/core/Mage/Adminhtml/controllers/ReportController.php @@ -131,7 +131,8 @@ class Mage_Adminhtml_ReportController extends Mage_Adminhtml_Controller_Action protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'search': return Mage::getSingleton('admin/session')->isAllowed('report/search'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php index d451d92..b5cdc4f 100644 --- app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php +++ app/code/core/Mage/Adminhtml/controllers/Rss/CatalogController.php @@ -34,17 +34,21 @@ class Mage_Adminhtml_Rss_CatalogController extends Mage_Adminhtml_Controller_Action { - public function preDispatch() + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() { $path = ''; - if ($this->getRequest()->getActionName() == 'review') { + $action = strtolower($this->getRequest()->getActionName()); + if ($action == 'review') { $path = 'catalog/reviews_ratings'; - } elseif ($this->getRequest()->getActionName() == 'notifystock') { + } elseif ($action == 'notifystock') { $path = 'catalog/products'; } - Mage::helper('adminhtml/rss')->authAdmin($path); - parent::preDispatch(); - return $this; + return Mage::getSingleton('admin/session')->isAllowed($path); } public function notifystockAction() diff --git app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php index f72cf3b..45dbecf 100644 --- app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php +++ app/code/core/Mage/Adminhtml/controllers/Rss/OrderController.php @@ -34,12 +34,6 @@ class Mage_Adminhtml_Rss_OrderController extends Mage_Adminhtml_Controller_Action { - public function preDispatch() - { - Mage::helper('adminhtml/rss')->authAdmin('catalog/reviews_ratings'); - parent::preDispatch(); - return $this; - } public function newAction() { @@ -48,4 +42,14 @@ class Mage_Adminhtml_Rss_OrderController extends Mage_Adminhtml_Controller_Actio $this->loadLayout(false); $this->renderLayout(); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php index 87e6f34..254fbd6 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/Billing/AgreementController.php @@ -203,7 +203,8 @@ class Mage_Adminhtml_Sales_Billing_AgreementController extends Mage_Adminhtml_Co */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'index': case 'grid' : case 'view' : diff --git app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php index be29ef5..54f5ae3 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/Order/View/GiftmessageController.php @@ -76,4 +76,14 @@ class Mage_Adminhtml_Sales_Order_View_GiftmessageController extends Mage_Adminht return Mage::getSingleton('adminhtml/giftmessage_save'); } + /** + * Acl check for admin + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('sales/order'); + } + } diff --git app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php index 5482571..680e22f 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php @@ -173,4 +173,14 @@ class Mage_Adminhtml_Sales_Recurring_ProfileController extends Mage_Adminhtml_Co Mage::register('current_recurring_profile', $profile); return $profile; } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('sales/recurring_profile'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php index 62671b6..a9a7d43 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php @@ -128,7 +128,8 @@ class Mage_Adminhtml_Sales_TransactionsController extends Mage_Adminhtml_Control */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'fetch': return Mage::getSingleton('admin/session')->isAllowed('sales/transactions/fetch'); break; diff --git app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php index ba2938a..5b0924b 100644 --- app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php +++ app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php @@ -181,4 +181,14 @@ class Mage_Adminhtml_System_Config_System_StorageController extends Mage_Adminht $result = Mage::helper('core')->jsonEncode($result); Mage::app()->getResponse()->setBody($result); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('system/config'); + } } diff --git app/code/core/Mage/Adminhtml/controllers/TagController.php app/code/core/Mage/Adminhtml/controllers/TagController.php index e6be338..2345ac2 100644 --- app/code/core/Mage/Adminhtml/controllers/TagController.php +++ app/code/core/Mage/Adminhtml/controllers/TagController.php @@ -344,7 +344,8 @@ class Mage_Adminhtml_TagController extends Mage_Adminhtml_Controller_Action */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'pending': return Mage::getSingleton('admin/session')->isAllowed('catalog/tag/pending'); break; diff --git app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php index 45b5236..0cbe80e 100644 --- app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php +++ app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php @@ -458,8 +458,9 @@ class Mage_Adminhtml_Tax_RateController extends Mage_Adminhtml_Controller_Action protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { - case 'importExport': + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { + case 'importexport': return Mage::getSingleton('admin/session')->isAllowed('sales/tax/import_export'); break; case 'index': diff --git app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php index 7e75f7a..cb757e4 100644 --- app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php +++ app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php @@ -116,5 +116,15 @@ class Mage_Centinel_Adminhtml_Centinel_IndexController extends Mage_Adminhtml_Co } return false; } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/review_payment'); + } } diff --git app/code/core/Mage/Checkout/controllers/MultishippingController.php app/code/core/Mage/Checkout/controllers/MultishippingController.php index cf4895c..e6afbbc 100644 --- app/code/core/Mage/Checkout/controllers/MultishippingController.php +++ app/code/core/Mage/Checkout/controllers/MultishippingController.php @@ -82,7 +82,7 @@ class Mage_Checkout_MultishippingController extends Mage_Checkout_Controller_Act { parent::preDispatch(); - $action = $this->getRequest()->getActionName(); + $action = strtolower($this->getRequest()->getActionName()); $checkoutSessionQuote = $this->_getCheckoutSession()->getQuote(); /** diff --git app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php index e915b61..a29b6d3 100644 --- app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php +++ app/code/core/Mage/Connect/controllers/Adminhtml/Extension/LocalController.php @@ -42,4 +42,14 @@ class Mage_Connect_Adminhtml_Extension_LocalController extends Mage_Adminhtml_Co $url = Mage::getBaseUrl('web') . 'downloader/?return=' . urlencode(Mage::getUrl('adminhtml')); $this->getResponse()->setRedirect($url); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('system/extensions/local'); + } } diff --git app/code/core/Mage/Core/Block/Abstract.php app/code/core/Mage/Core/Block/Abstract.php index 09e66c8..730b367 100644 --- app/code/core/Mage/Core/Block/Abstract.php +++ app/code/core/Mage/Core/Block/Abstract.php @@ -1034,6 +1034,19 @@ abstract class Mage_Core_Block_Abstract extends Varien_Object } /** + * Escape quotes inside html attributes + * Use $addSlashes = false for escaping js that inside html attribute (onClick, onSubmit etc) + * + * @param string $data + * @param bool $addSlashes + * @return string + */ + public function quoteEscape($data, $addSlashes = false) + { + return $this->helper('core')->quoteEscape($data, $addSlashes); + } + + /** * Escape quotes in java scripts * * @param mixed $data diff --git app/code/core/Mage/Core/Helper/Abstract.php app/code/core/Mage/Core/Helper/Abstract.php index 65d645d..df6d562 100644 --- app/code/core/Mage/Core/Helper/Abstract.php +++ app/code/core/Mage/Core/Helper/Abstract.php @@ -281,6 +281,22 @@ abstract class Mage_Core_Helper_Abstract } /** + * Escape quotes inside html attributes + * Use $addSlashes = false for escaping js that inside html attribute (onClick, onSubmit etc) + * + * @param string $data + * @param bool $addSlashes + * @return string + */ + public function quoteEscape($data, $addSlashes = false) + { + if ($addSlashes === true) { + $data = addslashes($data); + } + return htmlspecialchars($data, ENT_QUOTES, null, false); + } + + /** * Retrieve url * * @param string $route diff --git app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php index 13b0646..1d14667 100644 --- app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php +++ app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php @@ -76,4 +76,14 @@ class Mage_Paygate_Adminhtml_Paygate_Authorizenet_PaymentController extends Mage $output = $layout->getOutput(); return $output; } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/review_payment'); + } } diff --git app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php index 57d159e..c0486c8 100644 --- app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php +++ app/code/core/Mage/Paypal/controllers/Adminhtml/Paypal/ReportsController.php @@ -127,7 +127,8 @@ class Mage_Paypal_Adminhtml_Paypal_ReportsController extends Mage_Adminhtml_Cont */ protected function _isAllowed() { - switch ($this->getRequest()->getActionName()) { + $action = strtolower($this->getRequest()->getActionName()); + switch ($action) { case 'index': case 'details': return Mage::getSingleton('admin/session')->isAllowed('report/salesroot/paypal_settlement_reports/view'); diff --git app/code/core/Mage/Rss/controllers/CatalogController.php app/code/core/Mage/Rss/controllers/CatalogController.php index 845e67c..0c98b48 100644 --- app/code/core/Mage/Rss/controllers/CatalogController.php +++ app/code/core/Mage/Rss/controllers/CatalogController.php @@ -118,11 +118,12 @@ class Mage_Rss_CatalogController extends Mage_Core_Controller_Front_Action */ public function preDispatch() { - if ($this->getRequest()->getActionName() == 'notifystock') { + $action = strtolower($this->getRequest()->getActionName()); + if ($action == 'notifystock') { $this->_currentArea = 'adminhtml'; Mage::helper('rss')->authAdmin('catalog/products'); } - if ($this->getRequest()->getActionName() == 'review') { + if ($action == 'review') { $this->_currentArea = 'adminhtml'; Mage::helper('rss')->authAdmin('catalog/reviews_ratings'); } diff --git app/code/core/Mage/Rss/controllers/OrderController.php app/code/core/Mage/Rss/controllers/OrderController.php index 1cb6bc2..69c6693 100644 --- app/code/core/Mage/Rss/controllers/OrderController.php +++ app/code/core/Mage/Rss/controllers/OrderController.php @@ -77,7 +77,8 @@ class Mage_Rss_OrderController extends Mage_Core_Controller_Front_Action */ public function preDispatch() { - if ($this->getRequest()->getActionName() == 'new') { + $action = strtolower($this->getRequest()->getActionName()); + if ($action == 'new') { $this->_currentArea = 'adminhtml'; Mage::helper('rss')->authAdmin('sales/order'); } diff --git app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php index a510664..9bb9d65 100644 --- app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php +++ app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php @@ -176,7 +176,9 @@ class Mage_Widget_Block_Adminhtml_Widget_Chooser extends Mage_Adminhtml_Block_Te // render label and chooser scripts $configJson = Mage::helper('core')->jsonEncode($config->getData()); return ' - +