diff --git a/modules/Accounts/views/AccountHierarchy.php b/modules/Accounts/views/AccountHierarchy.php index ea3bc8836d982e9a77c26492ecbb1eb824e8c58e..6e31b143f6c233a2e3153e766588dd785918dfee 100644 --- a/modules/Accounts/views/AccountHierarchy.php +++ b/modules/Accounts/views/AccountHierarchy.php @@ -10,14 +10,13 @@ class Accounts_AccountHierarchy_View extends Vtiger_View_Controller { + public function requiresPermission(\Vtiger_Request $request) { + $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record'); + return $permissions; + } + public function checkPermission(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $moduleModel = Vtiger_Module_Model::getInstance($moduleName); - - $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); - if(!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId())) { - throw new AppException(vtranslate($moduleName, $moduleName).' '.vtranslate('LBL_NOT_ACCESSIBLE')); - } + parent::checkPermission($request); } function preProcess(Vtiger_Request $request, $display = true) { diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php index b05191ac42ac28b785528207dc0f2fcf86ee33aa..60ea03eaadc0da368636c77b88bddcc59d3f0d12 100644 --- a/modules/Vtiger/actions/Save.php +++ b/modules/Vtiger/actions/Save.php @@ -10,25 +10,25 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { + public function requiresPermission(\Vtiger_Request $request) { + $record = $request->get('record'); + $actionName = ($record) ? 'EditView' : 'CreateView'; + $permissions[] = array('module_parameter' => 'module', 'action' => $actionName, 'record_parameter' => 'record'); + $permissions[] = array('module_parameter' => 'module', 'action' => 'Save', 'record_parameter' => 'record'); + return $permissions; + } + public function checkPermission(Vtiger_Request $request) { $moduleName = $request->getModule(); $record = $request->get('record'); - $actionName = ($record) ? 'EditView' : 'CreateView'; - if(!Users_Privileges_Model::isPermitted($moduleName, $actionName, $record)) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); - } - - if(!Users_Privileges_Model::isPermitted($moduleName, 'Save', $record)) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); - } - if ($record) { $recordEntityName = getSalesEntityType($record); if ($recordEntityName !== $moduleName) { throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); } } + parent::checkPermission($request); } public function validateRequest(Vtiger_Request $request) { diff --git a/modules/Vtiger/views/Detail.php b/modules/Vtiger/views/Detail.php index dec2638d6683df636af18ddf93e56c6526f07e77..f7745a5fbd97af4e6c830f0eb85c5d98411369a9 100644 --- a/modules/Vtiger/views/Detail.php +++ b/modules/Vtiger/views/Detail.php @@ -26,22 +26,46 @@ class Vtiger_Detail_View extends Vtiger_Index_View { $this->exposeMethod('showRelatedRecords'); } + public function requiresPermission(Vtiger_Request $request){ + $mode = $request->getMode(); + if(!empty($mode)) { + switch ($mode) { + case 'showModuleDetailView': + case 'showModuleSummaryView': + case 'showModuleBasicView': + $permission[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record'); + break; + case 'showRecentComments': + case 'showChildComments': + $permission[] = array('module_parameter' => 'custom_module', 'action' => 'DetailView'); + $request->set('custom_module', 'ModComments'); + break; + case 'showRelatedList': + case 'showRelatedRecords': + $permission[] = array('module_parameter' => 'relatedModule', 'action' => 'DetailView'); + break; + case 'getActivities': + $permission[] = array('module_parameter' => 'custom_module', 'action' => 'DetailView'); + $request->set('custom_module', 'Calendar'); + break; + default: + break; + } + } + return $permission; + } + function checkPermission(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); - $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId); - if(!$recordPermission) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); - } - if ($recordId) { $recordEntityName = getSalesEntityType($recordId); if ($recordEntityName !== $moduleName) { throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); } } - return true; + parent::checkPermission($request); } function preProcess(Vtiger_Request $request, $display=true) { diff --git a/modules/Vtiger/views/Edit.php b/modules/Vtiger/views/Edit.php index 365ec5271c4d7529bb640bd3d7c80e5517b1cbe8..683376294e77ac7d8837947cc8665753b459a2d1 100644 --- a/modules/Vtiger/views/Edit.php +++ b/modules/Vtiger/views/Edit.php @@ -14,18 +14,19 @@ Class Vtiger_Edit_View extends Vtiger_Index_View { parent::__construct(); } - public function checkPermission(Vtiger_Request $request) { - $moduleName = $request->getModule(); + public function requiresPermission(\Vtiger_Request $request) { $record = $request->get('record'); - $actionName = 'CreateView'; if ($record && !$request->get('isDuplicate')) { $actionName = 'EditView'; } - - if(!Users_Privileges_Model::isPermitted($moduleName, $actionName, $record)) { - throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); - } + $permissions[] = array('module_parameter' => 'module', 'action' => $actionName, 'record_parameter' => 'record'); + return $permissions; + } + + public function checkPermission(Vtiger_Request $request) { + $moduleName = $request->getModule(); + $record = $request->get('record'); if ($record) { $recordEntityName = getSalesEntityType($record); @@ -33,6 +34,7 @@ Class Vtiger_Edit_View extends Vtiger_Index_View { throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); } } + parent::checkPermission($request); } public function setModuleInfo($request, $moduleModel) { diff --git a/modules/Vtiger/views/Index.php b/modules/Vtiger/views/Index.php index 1de1cde1b1eb6af3a47b33e2949990bce0f252a7..f2956e7884c66738ff9ffba72255317d8a38f12d 100644 --- a/modules/Vtiger/views/Index.php +++ b/modules/Vtiger/views/Index.php @@ -14,11 +14,6 @@ class Vtiger_Index_View extends Vtiger_Basic_View { parent::__construct(); } - function checkPermission(Vtiger_Request $request) { - //Return true as WebUI.php is already checking for module permission - return true; - } - public function preProcess (Vtiger_Request $request, $display=true) { parent::preProcess($request, false);