/** * @param string $uniqueLayoutId * @param array $metadata * @return array */ protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = parent::getPortlets($uniqueLayoutId, $metadata); return PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); }
public function testResolvePortletsForCurrentUser() { $betty = User::getByUsername('betty'); $this->assertFalse(RightsUtil::canUserAccessModule('AccountsModule', $betty)); $this->assertFalse(RightsUtil::canUserAccessModule('ContactsModule', $betty)); $this->assertFalse(RightsUtil::canUserAccessModule('TasksModule', $betty)); Yii::app()->user->userModel = $betty; $portlet1 = new Portlet(); $portlet1->viewType = 'AccountsRelatedList'; $portlet2 = new Portlet(); $portlet2->viewType = 'ContactsRelatedList'; $portlet3 = new Portlet(); $portlet3->viewType = 'TasksMyList'; $portlets = array(); $portlets[0][0] = $portlet1; $portlets[0][1] = $portlet2; $portlets[0][2] = $portlet3; $portlets[1][0] = $portlet3; $portlets[1][1] = $portlet1; $portlets[1][2] = $portlet3; $this->assertEquals(2, count($portlets)); $resolvedPortlets = PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); $comparePortlets = array(); $comparePortlets[0][0] = $portlet3; $comparePortlets[1][0] = $portlet3; $comparePortlets[1][1] = $portlet3; $this->assertEquals(0, count($resolvedPortlets)); Yii::app()->user->userModel = User::getByUsername('super'); $resolvedPortlets = PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); $this->assertEquals($portlets, $resolvedPortlets); }
/** * Override to allow for making a default set of portlets * via metadata optional. * */ protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, $this->params); if (empty($portlets) && $this->isDefaultDashboard) { $portlets = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($uniqueLayoutId, $metadata, Yii::app()->user->userModel, $this->params); Portlet::savePortlets($portlets); } return PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); }