From a52d41f9a34418b28e892f199f24e8ca9350d87a Mon Sep 17 00:00:00 2001 From: mattpiwik <matthieu.aubry@gmail.com> Date: Wed, 19 Dec 2012 22:13:38 +0000 Subject: [PATCH] * Fixing bug, when anonymous user is set with some permission, it should work * Also fixing that now adding &debug to the URL will display the backtrace as expected Refs #3337 git-svn-id: http://dev.piwik.org/svn/trunk@7670 59fd770c-687e-43c8-a1e3-f5a4ff64c105 --- core/API/ResponseBuilder.php | 5 +---- core/Controller.php | 2 +- core/Log/Exception.php | 2 +- plugins/Login/Login.php | 3 ++- plugins/MobileMessaging/API.php | 4 ++-- plugins/PDFReports/API.php | 3 +-- plugins/PDFReports/PDFReports.php | 23 +++++++++++++++++++---- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/core/API/ResponseBuilder.php b/core/API/ResponseBuilder.php index 731b030707..c0040e88ff 100644 --- a/core/API/ResponseBuilder.php +++ b/core/API/ResponseBuilder.php @@ -121,12 +121,9 @@ class Piwik_API_ResponseBuilder throw $e; } - try - { + try { $renderer = Piwik_DataTable_Renderer::factory($format); - } catch (Exception $e) { - return "Error: " . $e->getMessage(); } diff --git a/core/Controller.php b/core/Controller.php index c364e3ad14..0344bcd0ac 100644 --- a/core/Controller.php +++ b/core/Controller.php @@ -459,7 +459,7 @@ abstract class Piwik_Controller $this->setBasicVariablesView($view); } catch(Exception $e) { - Piwik_ExitWithMessage($e->getMessage()); + Piwik_ExitWithMessage($e->getMessage(), Piwik::shouldLoggerLog() ? $e->getTraceAsString() : ''); } } diff --git a/core/Log/Exception.php b/core/Log/Exception.php index d14b367021..ffb424e4c9 100644 --- a/core/Log/Exception.php +++ b/core/Log/Exception.php @@ -94,6 +94,6 @@ class Piwik_Log_Exception_Formatter_ScreenFormatter extends Piwik_Log_Formatter_ $outputFormat = strtolower(Piwik_Common::getRequestVar('format', 'html', 'string')); $response = new Piwik_API_ResponseBuilder($outputFormat); $message = $response->getResponseException(new Exception($errstr)); - return parent::format($message); + return parent::format($message ); } } diff --git a/plugins/Login/Login.php b/plugins/Login/Login.php index 0e7051c379..66b6ef48bd 100644 --- a/plugins/Login/Login.php +++ b/plugins/Login/Login.php @@ -46,11 +46,12 @@ class Piwik_Login extends Piwik_Plugin */ function noAccess( $notification ) { + /* @var Exception $exception */ $exception = $notification->getNotificationObject(); $exceptionMessage = $exception->getMessage(); $controller = new Piwik_Login_Controller(); - $controller->login($exceptionMessage); + $controller->login($exceptionMessage, Piwik::shouldLoggerLog() ? $exception->getTraceAsString() : '' ); } /** diff --git a/plugins/MobileMessaging/API.php b/plugins/MobileMessaging/API.php index 2a47f4498b..e79184dc08 100644 --- a/plugins/MobileMessaging/API.php +++ b/plugins/MobileMessaging/API.php @@ -52,7 +52,7 @@ class Piwik_MobileMessaging_API */ public function areSMSAPICredentialProvided() { - Piwik::checkUserIsNotAnonymous(); + Piwik::checkUserHasSomeViewAccess(); $credential = $this->getSMSAPICredential(); return isset($credential[Piwik_MobileMessaging::API_KEY_OPTION]); @@ -472,7 +472,7 @@ class Piwik_MobileMessaging_API */ public function getDelegatedManagement() { - Piwik::checkUserIsNotAnonymous(); + Piwik::checkUserHasSomeViewAccess(); return Piwik_GetOption(Piwik_MobileMessaging::DELEGATED_MANAGEMENT_OPTION) == 'true'; } } diff --git a/plugins/PDFReports/API.php b/plugins/PDFReports/API.php index c6bed41a16..043cf53c65 100644 --- a/plugins/PDFReports/API.php +++ b/plugins/PDFReports/API.php @@ -213,8 +213,7 @@ class Piwik_PDFReports_API */ public function getReports($idSite = false, $period = false, $idReport = false, $ifSuperUserReturnOnlySuperUserReports = false) { - Piwik::checkUserIsNotAnonymous(); - + Piwik::checkUserHasSomeViewAccess(); $cacheKey = (int)$idSite .'.'. (string)$period .'.'. (int)$idReport .'.'. (int)$ifSuperUserReturnOnlySuperUserReports; if(isset(self::$cache[$cacheKey])) { diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php index aa8c4d54d7..cb71b74745 100644 --- a/plugins/PDFReports/PDFReports.php +++ b/plugins/PDFReports/PDFReports.php @@ -580,15 +580,28 @@ class Piwik_PDFReports extends Piwik_Plugin if(!Piwik_PluginsManager::getInstance()->isPluginActivated('MobileMessaging')) return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; - $reports = Piwik_PDFReports_API::getInstance()->getReports(); + try { + // This would fail for anonymous user + $reports = Piwik_PDFReports_API::getInstance()->getReports(); + } catch(Exception $e) { + $reports = array(); + } $reportCount = count($reports); // if there are no reports and the mobile account is // not configured, display 'Email reports' // configured, display 'Email & SMS reports' if($reportCount == 0) - return Piwik_MobileMessaging_API::getInstance()->areSMSAPICredentialProvided() ? - self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + { + try { + return Piwik_MobileMessaging_API::getInstance()->areSMSAPICredentialProvided() ? + self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : + self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + } catch(Exception $e) { + // anonymous user + return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; + } + } $anyMobileReport = false; foreach($reports as $report) @@ -601,7 +614,9 @@ class Piwik_PDFReports extends Piwik_Plugin } // if there is at least one sms report, display 'Email & SMS reports' - if($anyMobileReport) return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; + if($anyMobileReport) { + return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; + } return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } -- GitLab