From 74a8f5fad35c6d2ebc2147d45317ee42f6fdd6f8 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Fri, 7 Oct 2016 14:27:54 -0400 Subject: [PATCH] HOR-2019 HOR-2019 --- workflow/engine/classes/model/ProcessUser.php | 27 ++++++++++++++++--- .../methods/cases/cases_OpenToRevise.php | 2 +- .../methods/cases/cases_StepToRevise.php | 6 +---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/workflow/engine/classes/model/ProcessUser.php b/workflow/engine/classes/model/ProcessUser.php index 1063c8459..b3596142e 100644 --- a/workflow/engine/classes/model/ProcessUser.php +++ b/workflow/engine/classes/model/ProcessUser.php @@ -93,17 +93,36 @@ class ProcessUser extends BaseProcessUser } } - public function validateUserAccess($proUid, $usrUid, $type) + public function validateUserAccess($proUid, $usrUid) { try { $oCriteria = new Criteria(); $oCriteria->add( ProcessUserPeer::PRO_UID, $proUid ); + $oCriteria->add( ProcessUserPeer::PU_TYPE, 'SUPERVISOR' ); $oCriteria->add( ProcessUserPeer::USR_UID, $usrUid ); - $oCriteria->add( ProcessUserPeer::PU_TYPE, $type ); - $data = ProcessUserPeer::doSelectOne( $oCriteria ); - if (! is_null( $data )) { + $dataset = ProcessUserPeer::doSelectRS( $oCriteria ); + $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + //If the user is in Assigned supervisors list + if($dataset->next()){ return true; } else { + //If the user is in a group in Assigned supervisors list + $oCriteria = new Criteria(); + $oCriteria->add( ProcessUserPeer::PRO_UID, $proUid ); + $oCriteria->add( ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); + $dataset = ProcessUserPeer::doSelectRS( $oCriteria ); + $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oGroups = new Groups(); + $aGroups = $oGroups->getActiveGroupsForAnUser($usrUid); + while ($dataset->next()) { + $row = $dataset->getRow(); + $groupUid = $row['USR_UID']; + if (in_array($groupUid, $aGroups)) { + return true; + } else { + return false; + } + } return false; } } catch (Exception $oError) { diff --git a/workflow/engine/methods/cases/cases_OpenToRevise.php b/workflow/engine/methods/cases/cases_OpenToRevise.php index 49e7d7666..5825398d8 100644 --- a/workflow/engine/methods/cases/cases_OpenToRevise.php +++ b/workflow/engine/methods/cases/cases_OpenToRevise.php @@ -135,7 +135,7 @@ while ($rsCriteria->next()) { } $processUser = new ProcessUser(); -$userAccess = $processUser->validateUserAccess($aFields['PRO_UID'], $_SESSION['USER_LOGGED'], 'SUPERVISOR'); +$userAccess = $processUser->validateUserAccess($aFields['PRO_UID'], $_SESSION['USER_LOGGED']); if(!$userAccess) { $flag = false; } diff --git a/workflow/engine/methods/cases/cases_StepToRevise.php b/workflow/engine/methods/cases/cases_StepToRevise.php index eadbaefe9..af2a45797 100644 --- a/workflow/engine/methods/cases/cases_StepToRevise.php +++ b/workflow/engine/methods/cases/cases_StepToRevise.php @@ -41,7 +41,7 @@ switch ($RBAC->userCanAccess( 'PM_SUPERVISOR' )) { //If the user does not have the permission and the user can be access from url $processUser = new ProcessUser(); -$userAccess = $processUser->validateUserAccess($_GET['PRO_UID'], $_SESSION['USER_LOGGED'], 'SUPERVISOR'); +$userAccess = $processUser->validateUserAccess($_GET['PRO_UID'], $_SESSION['USER_LOGGED']); if(!$userAccess) { G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); G::header( 'location: ../login/login' ); @@ -59,10 +59,6 @@ if ((int) $_SESSION['INDEX'] < 1) { G::LoadClass( 'case' ); G::LoadClass( 'derivation' ); -/* GET , POST & $_SESSION Vars */ -//$_SESSION['STEP_POSITION'] = (int)$_GET['POSITION']; - - /* Menues */ $G_MAIN_MENU = 'processmaker'; $G_SUB_MENU = 'cases';