Skip to content
Snippets Groups Projects
Commit addf63d3 authored by Uma's avatar Uma
Browse files

All report actions should check for module level profile permissions

parent de5b0288
No related branches found
No related tags found
1 merge request!419All report actions should check for module level profile permissions
......@@ -65,17 +65,25 @@ class Reports_Detail_View extends Vtiger_Index_View {
$primaryModule = $reportModel->getPrimaryModule();
$secondaryModules = $reportModel->getSecondaryModules();
$primaryModuleModel = Vtiger_Module_Model::getInstance($primaryModule);
$modulesList = array($primaryModule);
if(stripos($secondaryModules, ':') >= 0){
$secmodules = split(':', $secondaryModules);
$modulesList = array_merge($modulesList, $secmodules);
}else{
array_push($modulesList, $secondaryModules);
}
$currentUser = Users_Record_Model::getCurrentUserModel();
$userPrivilegesModel = Users_Privileges_Model::getInstanceById($currentUser->getId());
$permission = $userPrivilegesModel->hasModulePermission($primaryModuleModel->getId());
if(!$permission) {
$viewer->assign('MODULE', $primaryModule);
$viewer->assign('MESSAGE', vtranslate('LBL_PERMISSION_DENIED'));
$viewer->view('OperationNotPermitted.tpl', $primaryModule);
exit;
}
foreach ($modulesList as $checkModule) {
$moduleInstance = Vtiger_Module_Model::getInstance($checkModule);
$permission = $userPrivilegesModel->hasModulePermission($moduleInstance->getId());
if(!$permission) {
$viewer->assign('MODULE', $primaryModule);
$viewer->assign('MESSAGE', vtranslate('LBL_PERMISSION_DENIED'));
$viewer->view('OperationNotPermitted.tpl', $primaryModule);
exit;
}
}
$detailViewLinks = $detailViewModel->getDetailViewLinks();
......
......@@ -45,6 +45,7 @@ class Reports_ExportReport_View extends Vtiger_View_Controller {
function GetXLS(Vtiger_Request $request) {
$recordId = $request->get('record');
$reportModel = Reports_Record_Model::getInstanceById($recordId);
$this->checkReportModulePermission($request);
$reportModel->set('advancedFilter', $request->get('advanced_filter'));
$reportModel->getReportXLS($request->get('source'));
}
......@@ -56,6 +57,7 @@ class Reports_ExportReport_View extends Vtiger_View_Controller {
function GetCSV(Vtiger_Request $request) {
$recordId = $request->get('record');
$reportModel = Reports_Record_Model::getInstanceById($recordId);
$this->checkReportModulePermission($request);
$reportModel->set('advancedFilter', $request->get('advanced_filter'));
$reportModel->getReportCSV($request->get('source'));
}
......@@ -70,6 +72,7 @@ class Reports_ExportReport_View extends Vtiger_View_Controller {
$recordId = $request->get('record');
$reportModel = Reports_Record_Model::getInstanceById($recordId);
$this->checkReportModulePermission($request);
$reportModel->set('advancedFilter', $request->get('advanced_filter'));
$printData = $reportModel->getReportPrint();
......@@ -81,4 +84,31 @@ class Reports_ExportReport_View extends Vtiger_View_Controller {
$viewer->view('PrintReport.tpl', $moduleName);
}
function checkReportModulePermission(Vtiger_Request $request){
$viewer = $this->getViewer($request);
$recordId = $request->get('record');
$reportModel = Reports_Record_Model::getInstanceById($recordId);
$primaryModule = $reportModel->getPrimaryModule();
$secondaryModules = $reportModel->getSecondaryModules();
$modulesList = array($primaryModule);
if(stripos($secondaryModules, ':') >= 0){
$secmodules = split(':', $secondaryModules);
  • Contributor

    This is incorrect. If you have a report with no secondary module, this test passes as "0" also equates to false (which strpos returns). split is deprecated and should not be used; replace with explode.

  • Please register or sign in to reply
$modulesList = array_merge($modulesList, $secmodules);
}else{
array_push($modulesList, $secondaryModules);
}
$currentUser = Users_Record_Model::getCurrentUserModel();
$userPrivilegesModel = Users_Privileges_Model::getInstanceById($currentUser->getId());
foreach ($modulesList as $checkModule) {
$moduleInstance = Vtiger_Module_Model::getInstance($checkModule);
$permission = $userPrivilegesModel->hasModulePermission($moduleInstance->getId());
if(!$permission) {
$viewer->assign('MODULE', $primaryModule);
$viewer->assign('MESSAGE', vtranslate('LBL_PERMISSION_DENIED'));
$viewer->view('OperationNotPermitted.tpl', $primaryModule);
exit;
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment