BUG 14093 "User is able to delete groups and..." SOLVED

- User is able to delete groups and it is being used by a process.
- Problema resuelto, cuando se elimina a un grupo por ADMIN>USERS>GROUPS por un usuario, este grupo puede ser eliminado
  sin restriccion aunque el grupo este asignado a una tarea lo cual no es correcto.

  Se hace una validacion que verifica si el grupo esta asignado a una tarea, el grupo NO puede ser eliminado, se eliminara
  el grupo cuando este no este asignado a ninguna tarea.

  Disponible para la version 2.5.3 de ProcessMaker.
This commit is contained in:
Luis Fernando Saisa Lopez
2014-04-04 10:42:33 -04:00
committed by Erik Amaru Ortiz
parent 6d430abb29
commit e1979b360e
2 changed files with 68 additions and 26 deletions

View File

@@ -178,7 +178,7 @@ switch ($_POST['action']) {
$criteria = new Criteria( 'workflow' );
$criteria->add(ObjectPermissionPeer::USR_UID, $_POST['GRP_UID']);
ObjectPermissionPeer::doDelete( $criteria );
//Delete supervisors assignments
require_once 'classes/model/ProcessUser.php';
$criteria = new Criteria( 'workflow' );
@@ -342,5 +342,24 @@ switch ($_POST['action']) {
$c->saveConfig( 'groupList', 'pageSize', '', $_SESSION['USER_LOGGED'] );
echo '{success: true}';
break;
}
case "verifyIfAssigned":
$groupUid = $_POST["groupUid"];
$message = "OK";
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(TaskUserPeer::TAS_UID);
$criteria->add(TaskUserPeer::USR_UID, $groupUid, Criteria::EQUAL);
$criteria->add(TaskUserPeer::TU_RELATION, "2", Criteria::EQUAL);
$rsCriteria = TaskUserPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if($rsCriteria->next() != 0) {
$message = "ERROR";
}
$response = array();
$response["result"] = $message;
echo G::json_encode($response);
break;
}

View File

@@ -494,31 +494,54 @@ SaveEditGroup = function(){
};
//Delete Button Action
DeleteButtonAction = function(){
Ext.Msg.confirm(_('ID_CONFIRM'), _('ID_MSG_CONFIRM_DELETE_GROUP'),
function(btn, text){
if (btn=="yes"){
rowSelected = infoGrid.getSelectionModel().getSelected();
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'groups_Ajax',
params: {action: 'deleteGroup', GRP_UID: rowSelected.data.GRP_UID},
success: function(r,o){
viewport.getEl().unmask();
DoSearch();
editButton.disable(); //Disable Edit Button
deleteButton.disable(); //Disable Delete Button
membersButton.disable(); //Disable Members Button
PMExt.notify(_('ID_GROUPS'), _('ID_GROUPS_SUCCESS_DELETE'));
},
failure: function(){
viewport.getEl().unmask();
}
});
DeleteButtonAction = function() {
Ext.Msg.confirm(_('ID_CONFIRM'), _('ID_MSG_CONFIRM_DELETE_GROUP'),
function (btn, text) {
if (btn == "yes") {
rowSelected = infoGrid.getSelectionModel().getSelected();
}
}
);
Ext.Ajax.request({
url: "groups_Ajax",
method: "POST",
params: {
action: "verifyIfAssigned",
groupUid: rowSelected.data.GRP_UID
},
success: function (response, opts) {
var dataRespuesta = Ext.util.JSON.decode(response.responseText);
if (dataRespuesta.result == "OK") {
viewport.getEl().mask(_("ID_PROCESSING"));
Ext.Ajax.request({
url: "groups_Ajax",
params: {
action: "deleteGroup",
GRP_UID: rowSelected.data.GRP_UID
},
success: function(r,o) {
viewport.getEl().unmask();
DoSearch();
editButton.disable(); //Disable Edit Button
deleteButton.disable(); //Disable Delete Button
membersButton.disable(); //Disable Members Button
PMExt.notify(_('ID_GROUPS'), _('ID_GROUPS_SUCCESS_DELETE'));
},
failure: function() {
viewport.getEl().unmask();
}
});
} else {
Ext.MessageBox.alert(_("ID_ERROR"), _("ID_GROUP_CANNOT_DELETE_WHILE_ASSIGNED_TO_TASK"));
}
},
failure: function (response, opts){
//
}
});
}
}
);
};
//Render Status