Bläddra i källkod

Customer portal : Added info/warning/error messages to the issue log along some exceptions

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4182 a333f486-631f-4898-b8df-5754b55c2be0
glajarige 9 år sedan
förälder
incheckning
709f34b3c1

+ 4 - 0
datamodels/2.x/itop-portal-base/portal/src/controllers/browsebrickcontroller.class.inc.php

@@ -24,6 +24,7 @@ use \Symfony\Component\HttpFoundation\Request;
 use \Exception;
 use \Exception;
 use \UserRights;
 use \UserRights;
 use \Dict;
 use \Dict;
+use \IssueLog;
 use \MetaModel;
 use \MetaModel;
 use \DBSearch;
 use \DBSearch;
 use \DBObjectSearch;
 use \DBObjectSearch;
@@ -64,10 +65,12 @@ class BrowseBrickController extends BrickController
 		// Concistency checks
 		// Concistency checks
 		if (!in_array($sBrowseMode, array_keys($aBrowseModes)))
 		if (!in_array($sBrowseMode, array_keys($aBrowseModes)))
 		{
 		{
+			IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Unknown browse mode "' . $sBrowseMode . '" for brick #' . $sBrickId . ', availables are ' . implode(' / ', array_keys($aBrowseModes)));
 			$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : Unknown browse mode "' . $sBrowseMode . '", availables are ' . implode(' / ', array_keys($aBrowseModes)));
 			$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : Unknown browse mode "' . $sBrowseMode . '", availables are ' . implode(' / ', array_keys($aBrowseModes)));
 		}
 		}
 		if (empty($aLevelsProperties))
 		if (empty($aLevelsProperties))
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : No levels to display for brick #' . $sBrickId . '.');
 			$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : No levels to display.');
 			$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : No levels to display.');
 		}
 		}
 
 
@@ -235,6 +238,7 @@ class BrowseBrickController extends BrickController
 
 
 						if (!$bFoundLevel)
 						if (!$bFoundLevel)
 						{
 						{
+							IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Level alias "' . $sLevelAlias . '" is not defined for brick #' . $sBrickId . '.');
 							$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : Level alias "' . $sLevelAlias . '" is not defined for that brick.');
 							$oApp->abort(500, 'Browse brick "' . $sBrickId . '" : Level alias "' . $sLevelAlias . '" is not defined for that brick.');
 						}
 						}
 					}
 					}

+ 19 - 0
datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php

@@ -28,6 +28,7 @@ use \Exception;
 use \FileUploadException;
 use \FileUploadException;
 use \utils;
 use \utils;
 use \Dict;
 use \Dict;
+use \IssueLog;
 use \MetaModel;
 use \MetaModel;
 use \DBSearch;
 use \DBSearch;
 use \DBObjectSearch;
 use \DBObjectSearch;
@@ -70,12 +71,14 @@ class ObjectController extends AbstractController
 		// Checking parameters
 		// Checking parameters
 		if ($sObjectClass === '' || $sObjectId === '')
 		if ($sObjectClass === '' || $sObjectId === '')
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : sObjectClass and sObjectId expected, "' . $sObjectClass . '" and "' . $sObjectId . '" given.');
 			$oApp->abort(500, Dict::Format('UI:Error:2ParametersMissing', 'class', 'id'));
 			$oApp->abort(500, Dict::Format('UI:Error:2ParametersMissing', 'class', 'id'));
 		}
 		}
 
 
 		// Checking security layers
 		// Checking security layers
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sObjectClass, $sObjectId))
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sObjectClass, $sObjectId))
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to read ' . $sObjectClass . '::' . $sObjectId . ' object.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -84,6 +87,7 @@ class ObjectController extends AbstractController
 		if ($oObject === null)
 		if ($oObject === null)
 		{
 		{
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : Could not load object ' . $sObjectClass . '::' . $sObjectId . '.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -137,6 +141,7 @@ class ObjectController extends AbstractController
 		// Checking parameters
 		// Checking parameters
 		if ($sObjectClass === '' || $sObjectId === '')
 		if ($sObjectClass === '' || $sObjectId === '')
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : sObjectClass and sObjectId expected, "' . $sObjectClass . '" and "' . $sObjectId . '" given.');
 			$oApp->abort(500, Dict::Format('UI:Error:2ParametersMissing', 'class', 'id'));
 			$oApp->abort(500, Dict::Format('UI:Error:2ParametersMissing', 'class', 'id'));
 		}
 		}
 		
 		
@@ -145,6 +150,7 @@ class ObjectController extends AbstractController
 		$bAllowWrite = ($sObjectClass === 'Person' && $sObjectId == UserRights::GetContactId());
 		$bAllowWrite = ($sObjectClass === 'Person' && $sObjectId == UserRights::GetContactId());
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite)
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite)
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to modify ' . $sObjectClass . '::' . $sObjectId . ' object.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -153,6 +159,7 @@ class ObjectController extends AbstractController
 		if ($oObject === null)
 		if ($oObject === null)
 		{
 		{
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : Could not load object ' . $sObjectClass . '::' . $sObjectId . '.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -205,6 +212,7 @@ class ObjectController extends AbstractController
 		// Checking security layers
 		// Checking security layers
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_CREATE, $sObjectClass))
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_CREATE, $sObjectClass))
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to create ' . $sObjectClass . ' object.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -262,6 +270,7 @@ class ObjectController extends AbstractController
 		// Checking that the factory method is valid
 		// Checking that the factory method is valid
 		if (!is_callable($sMethodName))
 		if (!is_callable($sMethodName))
 		{
 		{
+			IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Invalid factory method "' . $sMethodName . '" used when creating an object.');
 			$oApp->abort(500, 'Invalid factory method "' . $sMethodName . '" used when creating an object');
 			$oApp->abort(500, 'Invalid factory method "' . $sMethodName . '" used when creating an object');
 		}
 		}
 		
 		
@@ -306,6 +315,7 @@ class ObjectController extends AbstractController
 		// Checking parameters
 		// Checking parameters
 		if ($sObjectClass === '' || $sObjectId === '' || $sStimulusCode === '')
 		if ($sObjectClass === '' || $sObjectId === '' || $sStimulusCode === '')
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : sObjectClass, sObjectId and $sStimulusCode expected, "' . $sObjectClass . '", "' . $sObjectId . '" and "' . $sStimulusCode . '" given.');
 			$oApp->abort(500, Dict::Format('UI:Error:3ParametersMissing', 'class', 'id', 'stimulus'));
 			$oApp->abort(500, Dict::Format('UI:Error:3ParametersMissing', 'class', 'id', 'stimulus'));
 		}
 		}
 
 
@@ -321,6 +331,7 @@ class ObjectController extends AbstractController
 		if ($oObject === null)
 		if ($oObject === null)
 		{
 		{
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
 			// We should never be there as the secuirty helper makes sure that the object exists, but just in case.
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : Could not load object ' . $sObjectClass . '::' . $sObjectId . '.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -475,6 +486,7 @@ class ObjectController extends AbstractController
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			{
 			{
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Parameters formmanager_class and formamanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 			}
 			}
 
 
@@ -595,6 +607,7 @@ class ObjectController extends AbstractController
 		// Checking parameters
 		// Checking parameters
 		if (!isset($aRequestContent['sQuery']))
 		if (!isset($aRequestContent['sQuery']))
 		{
 		{
+			IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Parameter sQuery missing.');
 			$oApp->abort(500, Dict::Format('UI:Error:ParameterMissing', 'sQuery'));
 			$oApp->abort(500, Dict::Format('UI:Error:ParameterMissing', 'sQuery'));
 		}
 		}
 
 
@@ -604,6 +617,7 @@ class ObjectController extends AbstractController
 		// Checking security layers
 		// Checking security layers
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : Could not load object ' . $sHostObjectClass . '::' . $sHostObjectId . '.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -685,6 +699,7 @@ class ObjectController extends AbstractController
 		// Checking security layers
 		// Checking security layers
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to read ' . $sHostObjectClass . '::' . $sHostObjectId . ' object.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -752,6 +767,7 @@ class ObjectController extends AbstractController
 		$aInternalParams = array();
 		$aInternalParams = array();
 		if ($oScopeSearch === null)
 		if ($oScopeSearch === null)
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' has no scope query for ' . $sTargetObjectClass . ' class.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -929,6 +945,7 @@ class ObjectController extends AbstractController
 		// Checking security layers
 		// Checking security layers
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		if (!SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sHostObjectClass, $sHostObjectId))
 		{
 		{
+			IssueLog::Warning(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' not allowed to read ' . $sHostObjectClass . '::' . $sHostObjectId . ' object.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -984,6 +1001,7 @@ class ObjectController extends AbstractController
 		$oScopeSearch = $oApp['scope_validator']->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ);
 		$oScopeSearch = $oApp['scope_validator']->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ);
 		if ($oScopeSearch === null)
 		if ($oScopeSearch === null)
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : User #' . UserRights::GetUserId() . ' has no scope query for ' . $sTargetObjectClass . ' class.');
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 			$oApp->abort(404, Dict::S('UI:ObjectDoesNotExist'));
 		}
 		}
 
 
@@ -1219,6 +1237,7 @@ class ObjectController extends AbstractController
 		$aObjectAttCodes = $oRequest->Get('aObjectAttCodes');
 		$aObjectAttCodes = $oRequest->Get('aObjectAttCodes');
 		if ($sObjectClass === null || $aObjectIds === null || $aObjectAttCodes === null)
 		if ($sObjectClass === null || $aObjectIds === null || $aObjectAttCodes === null)
 		{
 		{
+			IssueLog::Info(__METHOD__ . ' at line ' . __LINE__ . ' : sObjectClass, sObjectId and aObjectAttCodes expected, "' . $sObjectClass . '", "' . $sObjectId . '" given.');
 			$oApp->abort(500, 'Invalid request data, some informations are missing');
 			$oApp->abort(500, 'Invalid request data, some informations are missing');
 		}
 		}
 
 

+ 3 - 0
datamodels/2.x/itop-portal-base/portal/src/controllers/userprofilebrickcontroller.class.inc.php

@@ -20,6 +20,7 @@
 namespace Combodo\iTop\Portal\Controller;
 namespace Combodo\iTop\Portal\Controller;
 
 
 use \Exception;
 use \Exception;
+use \IssueLog;
 use \MetaModel;
 use \MetaModel;
 use \UserRights;
 use \UserRights;
 use \Silex\Application;
 use \Silex\Application;
@@ -140,6 +141,7 @@ class UserProfileBrickController extends BrickController
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			{
 			{
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Parameters formmanager_class and formamanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 			}
 			}
 
 
@@ -202,6 +204,7 @@ class UserProfileBrickController extends BrickController
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			$sFormManagerData = $oRequestParams->get('formmanager_data');
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			if ($sFormManagerClass === null || $sFormManagerData === null)
 			{
 			{
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Parameters formmanager_class and formamanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 				$oApp->abort(500, 'Parameters formmanager_class and formmanager_data must be defined.');
 			}
 			}
 
 

+ 3 - 0
datamodels/2.x/itop-portal-base/portal/src/forms/objectformmanager.class.inc.php

@@ -23,6 +23,7 @@ use \Exception;
 use \Silex\Application;
 use \Silex\Application;
 use \utils;
 use \utils;
 use \Dict;
 use \Dict;
+use \IssueLog;
 use \UserRights;
 use \UserRights;
 use \MetaModel;
 use \MetaModel;
 use \CMDBSource;
 use \CMDBSource;
@@ -377,6 +378,7 @@ class ObjectFormManager extends FormManager
 						}
 						}
 						else
 						else
 						{
 						{
+							IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Flag "' . $sFieldFlag . '" is not valid for field [@data-field-id="' . $sFieldId . '"] in form[@id="' . $this->aFormProperties['id'] . '"]');
 							throw new Exception('Flag "' . $sFieldFlag . '" is not valid for field [@data-field-id="' . $sFieldId . '"] in form[@id="' . $this->aFormProperties['id'] . '"]');
 							throw new Exception('Flag "' . $sFieldFlag . '" is not valid for field [@data-field-id="' . $sFieldId . '"] in form[@id="' . $this->aFormProperties['id'] . '"]');
 						}
 						}
 					}
 					}
@@ -697,6 +699,7 @@ class ObjectFormManager extends FormManager
 				CMDBSource::Query('ROLLBACK');
 				CMDBSource::Query('ROLLBACK');
 				$aData['valid'] = false;
 				$aData['valid'] = false;
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Rollback during submit (' . $e->getMessage() . ')');
 			}
 			}
 		}
 		}
 		else
 		else

+ 1 - 0
datamodels/2.x/itop-portal-base/portal/src/forms/passwordformmanager.class.inc.php

@@ -140,6 +140,7 @@ class PasswordFormManager extends FormManager
 			{
 			{
 				$aData['valid'] = false;
 				$aData['valid'] = false;
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Exception during submit (' . $e->getMessage() . ')');
 			}
 			}
 		}
 		}
 		else
 		else

+ 1 - 0
datamodels/2.x/itop-portal-base/portal/src/forms/preferencesformmanager.class.inc.php

@@ -133,6 +133,7 @@ class PreferencesFormManager extends FormManager
 				CMDBSource::Query('ROLLBACK');
 				CMDBSource::Query('ROLLBACK');
 				$aData['valid'] = false;
 				$aData['valid'] = false;
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
 				$aData['messages']['error'] += array('_main' => array($e->getMessage()));
+				IssueLog::Error(__METHOD__ . ' at line ' . __LINE__ . ' : Rollback during submit (' . $e->getMessage() . ')');
 			}
 			}
 		}
 		}
 		else
 		else