Bladeren bron

- Objects filtering (read) is now performed by the core directly, no need to check further which objects in a set are read-able. Only those that can be read are returned.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@684 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 15 jaren geleden
bovenliggende
commit
abbacd1f05
3 gewijzigde bestanden met toevoegingen van 14 en 25 verwijderingen
  1. 3 3
      application/cmdbabstract.class.inc.php
  2. 8 17
      application/displayblock.class.inc.php
  3. 3 5
      pages/UI.php

+ 3 - 3
application/cmdbabstract.class.inc.php

@@ -529,7 +529,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 		$aAuthorizedClasses = array();
 		foreach($aClasses as $sAlias => $sClassName)
 		{
-			if ((UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES) &&
+			if ( (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) && (UR_ALLOWED_YES || UR_ALLOWED_DEPENDS)) &&
 			( (count($aDisplayAliases) == 0) || (in_array($sAlias, $aDisplayAliases))) )
 			{
 				$aAuthorizedClasses[$sAlias] = $sClassName;
@@ -629,7 +629,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 		$aAuthorizedClasses = array();
 		foreach($aClasses as $sAlias => $sClassName)
 		{
-			if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES)
+			if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) && (UR_ALLOWED_YES || UR_ALLOWED_DEPENDS))
 			{
 				$aAuthorizedClasses[$sAlias] = $sClassName;
 			}
@@ -687,7 +687,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 		$aAuthorizedClasses = array();
 		foreach($aClasses as $sAlias => $sClassName)
 		{
-			if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES)
+			if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) && (UR_ALLOWED_YES || UR_ALLOWED_DEPENDS))
 			{
 				$aAuthorizedClasses[$sAlias] = $sClassName;
 			}

+ 8 - 17
application/displayblock.class.inc.php

@@ -436,7 +436,7 @@ class DisplayBlock
 				// Check the classes that can be read (i.e authorized) by this user...
 				foreach($aClasses as $sAlias => $sClassName)
 				{
-					if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES)
+					if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ,  $this->m_oSet) && (UR_ALLOWED_YES || UR_ALLOWED_DEPENDS))
 					{
 						$aAuthorizedClasses[$sAlias] = $sClassName;
 					}
@@ -536,32 +536,23 @@ class DisplayBlock
 			break;
 			
 			case 'details':
-			if (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES)
+			while($oObj = $this->m_oSet->Fetch())
 			{
-				while($oObj = $this->m_oSet->Fetch())
-				{
-					$sHtml .= $oObj->GetDetails($oPage); // Still used ???
-				}
+				$sHtml .= $oObj->GetDetails($oPage); // Still used ???
 			}
 			break;
 			
 			case 'bare_details':
-			if (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES)
+			while($oObj = $this->m_oSet->Fetch())
 			{
-				while($oObj = $this->m_oSet->Fetch())
-				{
-					$sHtml .= $oObj->GetBareProperties($oPage);
-				}
+				$sHtml .= $oObj->GetBareProperties($oPage);
 			}
 			break;
 			
 			case 'csv':
-			if (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES)
-			{
-				$sHtml .= "<textarea style=\"width:95%;height:98%\">\n";
-				$sHtml .= cmdbAbstractObject::GetSetAsCSV($this->m_oSet);
-				$sHtml .= "</textarea>\n";
-			}
+			$sHtml .= "<textarea style=\"width:95%;height:98%\">\n";
+			$sHtml .= cmdbAbstractObject::GetSetAsCSV($this->m_oSet);
+			$sHtml .= "</textarea>\n";
 			break;
 
 			case 'modify':

+ 3 - 5
pages/UI.php

@@ -676,8 +676,7 @@ try
 			}
 		
 			$bIsModifiedAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_MODIFY, $oSet) == UR_ALLOWED_YES) && !MetaModel::IsReadOnlyClass($sClass);
-			$bIsReadAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES);
-			if( ($oObj != null) && ($bIsModifiedAllowed) && ($bIsReadAllowed))
+			if( ($oObj != null) && $bIsModifiedAllowed )
 			{
 				$oP->set_title(Dict::Format('UI:ModificationPageTitle_Object_Class', $oObj->GetName(), $sClassLabel));
 				$oP->add("<div class=\"page_header\">\n");
@@ -707,14 +706,13 @@ try
 		$oSearch = new DBObjectSearch($sClass);
 		$oSearch->AddCondition('id', $id, '=');
 		$oSet = new CMDBObjectSet($oSearch);
-		if ($oSet->Count() > 0)
+		if ($oSet->Count() > 0) // Set is empty if not allowed to read this object
 		{
 			$oObjToClone = $oSet->Fetch();
 		}
 	
 		$bIsModifiedAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_MODIFY, $oSet) == UR_ALLOWED_YES) && !MetaModel::IsReadOnlyClass($sClass);
-		$bIsReadAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES);
-		if( ($oObjToClone != null) && ($bIsModifiedAllowed) && ($bIsReadAllowed))
+		if( ($oObjToClone != null) && ($bIsModifiedAllowed))
 		{
 			$oP->add_linked_script("../js/json.js");
 			$oP->add_linked_script("../js/forms-json-utils.js");