BUG-14596 User with "PM_REASSIGNCASE" permission can not reassign cases to himself.

This is  new feature, now the user with the "PM_REASSIGNCASE" permission is showd in the list of users to reassign the case.
This commit is contained in:
jennylee
2014-05-14 17:11:05 -04:00
parent 59e30b6166
commit 3dd51aab8d
2 changed files with 57 additions and 6 deletions

View File

@@ -92,6 +92,28 @@ class RolesPermissions extends BaseRolesPermissions
return $this->permission_name; return $this->permission_name;
} }
/**
* @return string
*/
public function getPermissionsByRolUid($rolUid = '')
{
try {
$oCriteria = new Criteria('rbac');
$oCriteria->add(RolesPermissionsPeer::ROL_UID, $rolUid);
$oDataset = RolesPermissionsPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$res = array();
while ($oDataset->next()) {
$res[] = $aRow = $oDataset->getRow();
}
return $res;
}
catch (Exception $oError) {
throw($oError);
}
}
/** /**
* *
* @param string $name * @param string $name

View File

@@ -6415,16 +6415,25 @@ class Cases
{ {
G::LoadClass('groups'); G::LoadClass('groups');
G::LoadClass('tasks'); G::LoadClass('tasks');
$r = new Roles();
$rolPerm = new RolesPermissions();
$perm = false;
$oTasks = new Tasks(); $oTasks = new Tasks();
$aAux = $oTasks->getGroupsOfTask($TAS_UID, 1); $aAux = $oTasks->getGroupsOfTask($TAS_UID, 1);
$row = array(); $row = array();
$groups = new Groups(); $groups = new Groups();
foreach ($aAux as $aGroup) { foreach ($aAux as $aGroup) {
$aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']); $aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']);
foreach ($aUsers as $aUser) { foreach ($aUsers as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) { $rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID']; $row[] = $aUser['USR_UID'];
} }
} }
@@ -6432,7 +6441,14 @@ class Cases
$aAux = $oTasks->getUsersOfTask($TAS_UID, 1); $aAux = $oTasks->getUsersOfTask($TAS_UID, 1);
foreach ($aAux as $aUser) { foreach ($aAux as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) { $rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID']; $row[] = $aUser['USR_UID'];
} }
} }
@@ -6444,7 +6460,14 @@ class Cases
foreach ($aAux as $aGroup) { foreach ($aAux as $aGroup) {
$aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']); $aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']);
foreach ($aUsers as $aUser) { foreach ($aUsers as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) { $rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID']; $row[] = $aUser['USR_UID'];
} }
} }
@@ -6453,7 +6476,14 @@ class Cases
// User Ad Hoc // User Ad Hoc
$aAux = $oTasks->getUsersOfTask($TAS_UID, 2); $aAux = $oTasks->getUsersOfTask($TAS_UID, 2);
foreach ($aAux as $aUser) { foreach ($aAux as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) { $rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID']; $row[] = $aUser['USR_UID'];
} }
} }
@@ -6527,7 +6557,6 @@ class Cases
} }
} }
} }
return $rows; return $rows;
} }