#!/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.6.2.0 | v1 | 5e620365888f346684d708178f4efd827aa759e0 | Tue Jun 23 16:21:45 2015 +0300 | de98e986d2..5e62036588 __PATCHFILE_FOLLOWS__ diff --git app/Mage.php app/Mage.php index 9f251f1..4922234 100644 --- app/Mage.php +++ app/Mage.php @@ -736,12 +736,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 b06db32..9169130 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 cf71627..df2279e 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 f6228de..6fa50ee 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 d28ca4f..5e37631 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 6168cc4..e5056b4 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 c09c0ea..9cf19d4 100644 --- app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php +++ app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php @@ -365,7 +365,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 b450953..5c345ae 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 56ff0c5..0a2a3b5 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 8d1ad3d..d565b09 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 fa8d591..4f1bdff 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 6aa9a44..28e8a21 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/JsonController.php app/code/core/Mage/Adminhtml/controllers/JsonController.php index d1b4982..658a921 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 2f8c5d4..a0b5c20 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 b1758d4..94459c7 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 4d0586e..5f12ea3 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 536e380..b965555 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 8a5b563..069b5de 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 04100be..d1dc233 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 e2c3617..0c2f5a3 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 d7b576f..0aba4d8 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 60abbf2..c52c9a7 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 33fd980..86030b6 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 b2510d2..2bd1944 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 4359bfa..b2ef5b8 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 9a34591..5c23f75 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 769c153..304a793 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 f525f52..cd1efce 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 a6be40d..132ba90 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 1b07be9..09f7d64 100644 --- app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php +++ app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php @@ -470,8 +470,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 f75f2d2..cf1612a 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 8af1443..101229d 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 50ae9e8..edb75c0 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 b63148b..7ece433 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/Core/Helper/Abstract.php app/code/core/Mage/Core/Helper/Abstract.php index 06df789..6289b39 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/ImportExport/Model/Abstract.php app/code/core/Mage/ImportExport/Model/Abstract.php index 4b8f1a4..d8c9a3c 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/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php app/code/core/Mage/Paygate/controllers/Adminhtml/Paygate/Authorizenet/PaymentController.php index 79330ae..795b27d 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 a032fc2..d667493 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 15a2c1f..c033aa4 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 c16b49b..85ac22e 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 a84f0d8..6b10ea3 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')) + . '