diff --git a/languages/en_us/Vtiger.php b/languages/en_us/Vtiger.php index c38bc649506db6b8ff04a829042a9c21f8d25aec..147fcf73f122f87e6c8ee308fe1176819e23061d 100644 --- a/languages/en_us/Vtiger.php +++ b/languages/en_us/Vtiger.php @@ -1388,6 +1388,7 @@ $languageStrings = array( 'LBL_VIEW_UPDATES_IN_DETAIL' => 'Read More ...', 'LBL_DEFAULT_DASHBOARD_TOOLTIP'=>'Make this dashboard as default by reordering it as the first tab!', 'LBL_RELATED_MODULES_PERMISSION_DENIED' => 'Related modules permission is denied', + 'LBL_RECORD_PERMISSION_DENIED' => 'Record permissions denied', ); $jsLanguageStrings = array( diff --git a/modules/Vtiger/actions/SaveStar.php b/modules/Vtiger/actions/SaveStar.php index 953f2b209d905367d1ad512eee04e6ff498903ab..1905042f1d2e71a7ea866f43fa6f33d35ec2b5c9 100644 --- a/modules/Vtiger/actions/SaveStar.php +++ b/modules/Vtiger/actions/SaveStar.php @@ -9,16 +9,35 @@ * ***********************************************************************************/ class Vtiger_SaveStar_Action extends Vtiger_Mass_Action { - + var $followRecordIds = Array(); + + public function requiresPermission(\Vtiger_Request $request) { + $permissions = parent::requiresPermission($request); + $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record'); + return $permissions; + } function checkPermission(Vtiger_Request $request) { - //Return true as WebUI.php is already checking for module permission + parent::checkPermission($request); + if ($request->has('selected_ids')) { + $recordIds = $this->getRecordsListFromRequest($request); + foreach ($recordIds as $recordId) { + $moduleName = getSalesEntityType($recordId); + $permissionStatus = Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId); + if($permissionStatus){ + $this->followRecordIds[] = $recordId; + } + if(empty($this->followRecordIds)){ + throw new AppException(vtranslate('LBL_RECORD_PERMISSION_DENIED')); + } + } + } return true; } public function process(Vtiger_Request $request) { $module = $request->get('module'); if ($request->has('selected_ids')) { - $recordIds = $this->getRecordsListFromRequest($request); + $recordIds = $this->followRecordIds; } else { $recordIds = array($request->get('record')); }