#!/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.7.0.2 | v1 | 84749c91e14543e1f96af30e86efdf29f4562c98 | Tue Jun 23 09:48:07 2015 +0300 | c6e6cee8eb..84749c91e1 __PATCHFILE_FOLLOWS__ diff --git app/Mage.php app/Mage.php index bc7a6cb..3c748be 100644 --- app/Mage.php +++ app/Mage.php @@ -813,12 +813,12 @@ final class Mage if (!is_dir($logDir)) { mkdir($logDir); - chmod($logDir, 0777); + 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 c86c86c..58c51bf 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 b569f12..9a17756 100644 --- app/code/core/Mage/Adminhtml/Controller/Action.php +++ app/code/core/Mage/Adminhtml/Controller/Action.php @@ -71,7 +71,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 55f5486..74377bc 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 5147323..9473c59 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 178df4f..103ee9d 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 31bc601..d8440d3 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php @@ -367,7 +367,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 77fe8a8..fb180da 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 8843262..a3040d8 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 200866d..6c49fd2 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 c600585..4882880 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 595ed68..edb930a 100644 --- app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php +++ app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php @@ -63,4 +63,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/Customer/System/Config/ValidatevatController.php app/code/core/Mage/Adminhtml/controllers/Customer/System/Config/ValidatevatController.php index e403ba3..e9c4de8 100644 --- app/code/core/Mage/Adminhtml/controllers/Customer/System/Config/ValidatevatController.php +++ app/code/core/Mage/Adminhtml/controllers/Customer/System/Config/ValidatevatController.php @@ -88,4 +88,14 @@ class Mage_Adminhtml_Customer_System_Config_ValidatevatController extends Mage_A )); $this->getResponse()->setBody($body); } + + /** + * 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/JsonController.php app/code/core/Mage/Adminhtml/controllers/JsonController.php index 9008f23..03c3246 100644 --- app/code/core/Mage/Adminhtml/controllers/JsonController.php +++ app/code/core/Mage/Adminhtml/controllers/JsonController.php @@ -56,4 +56,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 fd0f92b..308248a 100644 --- app/code/core/Mage/Adminhtml/controllers/NotificationController.php +++ app/code/core/Mage/Adminhtml/controllers/NotificationController.php @@ -160,12 +160,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; @@ -173,7 +174,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 1353df1..9e35934 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 2d2cc25..602c6ef 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/ProductController.php @@ -267,7 +267,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 709ef8f..7b95544 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 06e572d..e6c4f67 100644 --- app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php +++ app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php @@ -389,7 +389,8 @@ class Mage_Adminhtml_Report_SalesController extends Mage_Adminhtml_Controller_Re 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 dee864f..e43583b 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 e4fc310..03d6e9f 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 ad046a9..bb8172b 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 33b5281..f916ba5 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 d39da8e..7ca4c5a 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 5c55e61..5b7f15a 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 467fa20..3207a95 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 3650bc2..bd250b1 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/Recurring/ProfileController.php @@ -202,4 +202,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 6367284..454cac3 100644 --- app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php +++ app/code/core/Mage/Adminhtml/controllers/Sales/TransactionsController.php @@ -130,7 +130,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 12c1072..24977c0 100644 --- app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php +++ app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php @@ -180,4 +180,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 1241a96..cdc6b8d 100644 --- app/code/core/Mage/Adminhtml/controllers/TagController.php +++ app/code/core/Mage/Adminhtml/controllers/TagController.php @@ -346,7 +346,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 074f570..6c7d4bb 100644 --- app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php +++ app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php @@ -455,8 +455,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/Api2/controllers/Adminhtml/Api2/AttributeController.php app/code/core/Mage/Api2/controllers/Adminhtml/Api2/AttributeController.php index ac6a4a6..9a98249 100644 --- app/code/core/Mage/Api2/controllers/Adminhtml/Api2/AttributeController.php +++ app/code/core/Mage/Api2/controllers/Adminhtml/Api2/AttributeController.php @@ -145,4 +145,14 @@ class Mage_Api2_Adminhtml_Api2_AttributeController extends Mage_Adminhtml_Contro $this->_redirect('*/*/edit', array('type' => $type)); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('system/api'); + } } diff --git app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php index 57a8ef6..9419c65 100644 --- app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php +++ app/code/core/Mage/Bundle/controllers/Adminhtml/Bundle/SelectionController.php @@ -59,5 +59,13 @@ class Mage_Bundle_Adminhtml_Bundle_SelectionController extends Mage_Adminhtml_Co ->toHtml() ); } - + /** + * Check for is allowed + * + * @return boolean + */ + protected function _isAllowed() + { + return Mage::getSingleton('admin/session')->isAllowed('catalog/products'); + } } diff --git app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php index 36851cf..8e2f643 100755 --- app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php +++ app/code/core/Mage/Captcha/controllers/Adminhtml/RefreshController.php @@ -47,4 +47,14 @@ class Mage_Captcha_Adminhtml_RefreshController extends Mage_Adminhtml_Controller $this->getResponse()->setBody(json_encode(array('imgSrc' => $captchaModel->getImgSrc()))); $this->setFlag('', self::FLAG_NO_POST_DISPATCH, true); } + + /** + * Check is allowed access to action + * + * @return bool + */ + protected function _isAllowed() + { + return true; + } } diff --git app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php app/code/core/Mage/Centinel/controllers/Adminhtml/Centinel/IndexController.php index a67bddf..eca1030 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 71ee416..fb370f2 100644 --- app/code/core/Mage/Checkout/controllers/MultishippingController.php +++ app/code/core/Mage/Checkout/controllers/MultishippingController.php @@ -86,7 +86,7 @@ class Mage_Checkout_MultishippingController extends Mage_Checkout_Controller_Act return $this; } - $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 9c38e0b..5977124 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 dc92040..1e1659d 100644 --- app/code/core/Mage/Core/Block/Abstract.php +++ app/code/core/Mage/Core/Block/Abstract.php @@ -1139,6 +1139,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/ImportExport/Model/Abstract.php app/code/core/Mage/ImportExport/Model/Abstract.php index d65a06a..0a5cc25 100644 --- app/code/core/Mage/ImportExport/Model/Abstract.php +++ app/code/core/Mage/ImportExport/Model/Abstract.php @@ -89,7 +89,7 @@ abstract class Mage_ImportExport_Model_Abstract extends Varien_Object $dirPath = Mage::getBaseDir('var') . DS . Mage_ImportExport_Model_Scheduled_Operation::LOG_DIRECTORY . $dirName; if (!is_dir($dirPath)) { - mkdir($dirPath, 0777, true); + mkdir($dirPath, 0750, true); } $fileName = substr(strstr(Mage_ImportExport_Model_Scheduled_Operation::LOG_DIRECTORY, DS), 1) . $dirName . $fileName . '.log'; diff --git app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php index 833ab13..20a168a 100644 --- app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php +++ app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php @@ -298,4 +298,14 @@ class Mage_Oauth_Adminhtml_Oauth_AuthorizeController extends Mage_Adminhtml_Cont { $this->_initRejectPage(); } + + /** + * Check admin permissions for this controller + * + * @return boolean + */ + protected function _isAllowed() + { + return true; + } } 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 06ca118..f90b323 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 2d31c6c..2560f91 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 22a7349..6764617 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 df7e171..fcec087 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 434617b..9677ea2 100644 --- app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php +++ app/code/core/Mage/Widget/Block/Adminhtml/Widget/Chooser.php @@ -178,7 +178,8 @@ class Mage_Widget_Block_Adminhtml_Widget_Chooser extends Mage_Adminhtml_Block_Te $configJson = Mage::helper('core')->jsonEncode($config->getData()); return ' + . $this->quoteEscape($this->getLabel() ? $this->getLabel() : Mage::helper('widget')->__('Not Selected')) + . '