From 29df80b48f163c236217f1024120411685ba5605 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 14 May 2018 08:45:22 -0700 Subject: [PATCH] Fix a fatal during breadcrumb construction when viewing a dashboard you don't have permission to view Summary: Ref PHI662. Viewing a dashboard you don't have permission to view (in the Dashboard application) currently fatals while building crumbs, since we fail to build the ` ... > Dashboard 123 > ...` crumb. Test Plan: - Viewed a dashboard I didn't have permission to view in the Dashboards application. - Before patch, fatal when calling `getID()` on a non-object. - After patch, sensible policy error page. - Viewed a dashboard I can view, saw sensible crumbs. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D19449 --- .../PhabricatorDashboardProfileController.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php b/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php index 6a23b351ac..adc85efdf3 100644 --- a/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php +++ b/src/applications/dashboard/controller/PhabricatorDashboardProfileController.php @@ -44,13 +44,16 @@ abstract class PhabricatorDashboardProfileController } protected function buildApplicationCrumbs() { - $dashboard = $this->getDashboard(); - $id = $dashboard->getID(); - $dashboard_uri = $this->getApplicationURI("/view/{$id}/"); - $crumbs = parent::buildApplicationCrumbs(); - $crumbs->addTextCrumb($dashboard->getName(), $dashboard_uri); $crumbs->setBorder(true); + + $dashboard = $this->getDashboard(); + if ($dashboard) { + $id = $dashboard->getID(); + $dashboard_uri = $this->getApplicationURI("/view/{$id}/"); + $crumbs->addTextCrumb($dashboard->getName(), $dashboard_uri); + } + return $crumbs; }