From 6e5cbdb3e5a47ccc592db3616713d211e220f17c Mon Sep 17 00:00:00 2001 From: Uma <uma.s@vtiger.com> Date: Thu, 22 Aug 2019 16:05:34 +0530 Subject: [PATCH] Checkpermission on Calendar and Customview is addressed --- modules/Calendar/actions/ActivityReminder.php | 4 - modules/Calendar/actions/CalendarActions.php | 6 +- .../Calendar/actions/CalendarUserActions.php | 24 +----- modules/Calendar/actions/SaveFollowupAjax.php | 19 +++-- modules/CustomView/actions/Save.php | 4 - modules/CustomView/models/Record.php | 2 +- modules/CustomView/views/EditAjax.php | 3 - modules/Vtiger/actions/BasicAjax.php | 73 ++++++++++--------- modules/Vtiger/actions/ExportData.php | 4 +- modules/Vtiger/actions/Save.php | 1 + .../RecycleBin/actions/RecycleBinAjax.php | 2 +- 11 files changed, 57 insertions(+), 85 deletions(-) diff --git a/modules/Calendar/actions/ActivityReminder.php b/modules/Calendar/actions/ActivityReminder.php index 073aaa0ef..3d51ed4dc 100644 --- a/modules/Calendar/actions/ActivityReminder.php +++ b/modules/Calendar/actions/ActivityReminder.php @@ -34,10 +34,6 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{ } return $permissions; } - - public function checkPermission(Vtiger_Request $request) { - return parent::checkPermission($request); - } public function process(Vtiger_Request $request) { $mode = $request->getMode(); diff --git a/modules/Calendar/actions/CalendarActions.php b/modules/Calendar/actions/CalendarActions.php index 71a0bc953..243759ce5 100644 --- a/modules/Calendar/actions/CalendarActions.php +++ b/modules/Calendar/actions/CalendarActions.php @@ -28,11 +28,7 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action { } return $permissions; } - - public function checkPermission(Vtiger_Request $request) { - return parent::checkPermission($request); - } - + public function process(Vtiger_Request $request) { $mode = $request->getMode(); if (!empty($mode) && $this->isMethodExposed($mode)) { diff --git a/modules/Calendar/actions/CalendarUserActions.php b/modules/Calendar/actions/CalendarUserActions.php index 274692da7..b4b377bc8 100755 --- a/modules/Calendar/actions/CalendarUserActions.php +++ b/modules/Calendar/actions/CalendarUserActions.php @@ -20,32 +20,10 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{ public function requiresPermission(Vtiger_Request $request){ $permissions = parent::requiresPermission($request); - $mode = $request->getMode(); - if(!empty($mode)) { - switch ($mode) { - case 'deleteUserCalendar': - $permissions[] = array('module_parameter' => 'module', 'action' => 'EditView'); - break; - case 'deleteCalendarView': - $permissions[] = array('module_parameter' => 'module', 'action' => 'EditView'); - $permissions[] = array('module_parameter' => 'module', 'action' => 'Delete'); - break; - case 'addUserCalendar': - case 'addCalendarView': - $permissions[] = array('module_parameter' => 'module', 'action' => 'EditView'); - $permissions[] = array('module_parameter' => 'module', 'action' => 'CreateView'); - break; - default: - break; - } - } + $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView'); return $permissions; } - public function checkPermission(Vtiger_Request $request) { - return parent::checkPermission($request); - } - public function process(Vtiger_Request $request) { $mode = $request->getMode(); if(!empty($mode) && $this->isMethodExposed($mode)) { diff --git a/modules/Calendar/actions/SaveFollowupAjax.php b/modules/Calendar/actions/SaveFollowupAjax.php index 59d321a79..0f0e470ba 100755 --- a/modules/Calendar/actions/SaveFollowupAjax.php +++ b/modules/Calendar/actions/SaveFollowupAjax.php @@ -10,18 +10,21 @@ class Calendar_SaveFollowupAjax_Action extends Calendar_SaveAjax_Action { +// public function requiresPermission(Vtiger_Request $request){ +// $permissions = parent::requiresPermission($request); +// $record = $request->get('record'); +// $actionName = ($record) ? 'EditView' : 'CreateView'; +// +// $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record'); +// $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'); - $actionName = ($record && $request->getMode() != 'createFollowupEvent') ? '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')); - } + parent::checkPermission($request); if ($record) { $activityModulesList = array('Calendar', 'Events'); diff --git a/modules/CustomView/actions/Save.php b/modules/CustomView/actions/Save.php index a28abced8..6900d392f 100644 --- a/modules/CustomView/actions/Save.php +++ b/modules/CustomView/actions/Save.php @@ -14,10 +14,6 @@ class CustomView_Save_Action extends Vtiger_Action_Controller { $permissions[] = array('module_parameter' => 'source_module', 'action' => 'DetailView'); return $permissions; } - - public function checkPermission(Vtiger_Request $request) { - return parent::checkPermission($request); - } public function process(Vtiger_Request $request) { $sourceModuleName = $request->get('source_module'); diff --git a/modules/CustomView/models/Record.php b/modules/CustomView/models/Record.php index c2964abdd..2c2cf5b13 100644 --- a/modules/CustomView/models/Record.php +++ b/modules/CustomView/models/Record.php @@ -747,7 +747,7 @@ class CustomView_Record_Model extends Vtiger_Base_Model { } public function getToggleDefaultUrl() { - return 'index.php?module=CustomView&action=SaveAjax&record='.$this->getId(); + return 'index.php?module=CustomView&source_module='.$this->getModule()->get('name').'&action=SaveAjax&record='.$this->getId(); } /** diff --git a/modules/CustomView/views/EditAjax.php b/modules/CustomView/views/EditAjax.php index 0fb95813e..aac78c7be 100644 --- a/modules/CustomView/views/EditAjax.php +++ b/modules/CustomView/views/EditAjax.php @@ -15,9 +15,6 @@ Class CustomView_EditAjax_View extends Vtiger_IndexAjax_View { $permissions[] = array('module_parameter' => 'source_module', 'action' => 'DetailView'); return $permissions; } - public function checkPermission(Vtiger_Request $request) { - return parent::checkPermission($request); - } public function process(Vtiger_Request $request) { $viewer = $this->getViewer ($request); diff --git a/modules/Vtiger/actions/BasicAjax.php b/modules/Vtiger/actions/BasicAjax.php index cdb63b727..7abf09a14 100644 --- a/modules/Vtiger/actions/BasicAjax.php +++ b/modules/Vtiger/actions/BasicAjax.php @@ -10,39 +10,42 @@ class Vtiger_BasicAjax_Action extends Vtiger_Action_Controller { - public function requiresPermission(\Vtiger_Request $request) { - $permissions = parent::requiresPermission($request); - $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView'); - $permissions[] = array('module_parameter' => 'search_module', 'action' => 'DetailView'); - if(!empty($request->get('parent_module'))){ - $permissions[] = array('module_parameter' => 'parent_module', 'action' => 'DetailView'); - } - return $permissions; - } - - public function process(Vtiger_Request $request) { - $searchValue = $request->get('search_value'); - $searchModule = $request->get('search_module'); - - $parentRecordId = $request->get('parent_id'); - $parentModuleName = $request->get('parent_module'); - $relatedModule = $request->get('module'); - - $searchModuleModel = Vtiger_Module_Model::getInstance($searchModule); - $records = $searchModuleModel->searchRecord($searchValue, $parentRecordId, $parentModuleName, $relatedModule); - - $baseRecordId = $request->get('base_record'); - $result = array(); - foreach($records as $moduleName=>$recordModels) { - foreach($recordModels as $recordModel) { - if ($recordModel->getId() != $baseRecordId) { - $result[] = array('label'=>decode_html($recordModel->getName()), 'value'=>decode_html($recordModel->getName()), 'id'=>$recordModel->getId()); - } - } - } - - $response = new Vtiger_Response(); - $response->setResult($result); - $response->emit(); - } + public function requiresPermission(\Vtiger_Request $request) { + $permissions = parent::requiresPermission($request); + $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView'); + if (!empty($request->get('search_module'))) { + $permissions[] = array('module_parameter' => 'search_module', 'action' => 'DetailView'); + } + if (!empty($request->get('parent_module'))) { + $permissions[] = array('module_parameter' => 'parent_module', 'action' => 'DetailView'); + } + return $permissions; + } + + public function process(Vtiger_Request $request) { + $searchValue = $request->get('search_value'); + $searchModule = $request->get('search_module'); + + $parentRecordId = $request->get('parent_id'); + $parentModuleName = $request->get('parent_module'); + $relatedModule = $request->get('module'); + + $searchModuleModel = Vtiger_Module_Model::getInstance($searchModule); + $records = $searchModuleModel->searchRecord($searchValue, $parentRecordId, $parentModuleName, $relatedModule); + + $baseRecordId = $request->get('base_record'); + $result = array(); + foreach ($records as $moduleName => $recordModels) { + foreach ($recordModels as $recordModel) { + if ($recordModel->getId() != $baseRecordId) { + $result[] = array('label' => decode_html($recordModel->getName()), 'value' => decode_html($recordModel->getName()), 'id' => $recordModel->getId()); + } + } + } + + $response = new Vtiger_Response(); + $response->setResult($result); + $response->emit(); + } + } diff --git a/modules/Vtiger/actions/ExportData.php b/modules/Vtiger/actions/ExportData.php index 8bbea58fe..2a8b3d651 100644 --- a/modules/Vtiger/actions/ExportData.php +++ b/modules/Vtiger/actions/ExportData.php @@ -14,7 +14,9 @@ class Vtiger_ExportData_Action extends Vtiger_Mass_Action { public function requiresPermission(\Vtiger_Request $request) { $permissions = parent::requiresPermission($request); $permissions[] = array('module_parameter' => 'module', 'action' => 'Export'); - $permissions[] = array('module_parameter' => 'source_module', 'action' => 'Export'); + if (!empty($request->get('source_module'))) { + $permissions[] = array('module_parameter' => 'source_module', 'action' => 'Export'); + } return $permissions; } diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php index 36cf4c2fd..e848585c3 100644 --- a/modules/Vtiger/actions/Save.php +++ b/modules/Vtiger/actions/Save.php @@ -27,6 +27,7 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { $recordParameter = 'record'; } $actionName = ($record || $recordId) ? 'EditView' : 'CreateView'; + $permissions[] = array('module_parameter' => $moduleParameter, 'action' => 'DetailView', 'record_parameter' => $recordParameter); $permissions[] = array('module_parameter' => $moduleParameter, 'action' => $actionName, 'record_parameter' => $recordParameter); return $permissions; } diff --git a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php index 3d5a429a4..f6d9f63a4 100644 --- a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php +++ b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php @@ -19,7 +19,7 @@ class RecycleBin_RecycleBinAjax_Action extends Vtiger_Mass_Action { function checkPermission(Vtiger_Request $request) { if($request->get('mode') == 'emptyRecycleBin') { - //Only admin user can empty the recycle bin, so this check is mabdatory + //Only admin user can empty the recycle bin, so this check is mandatory $currentUserModel = Users_Record_Model::getCurrentUserModel(); if(!$currentUserModel->isAdminUser()) { throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); -- GitLab