diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 69feae7d6..a9dbb3161 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -5353,12 +5353,14 @@ class G $sflagAudit = $oServerConf->getAuditLogProperty( 'AL_OPTION', $workspace ); $ipClient = G::getIpAddress(); - $licensedFeatures = PMLicensedFeatures::getSingleton(); + /*----------------------------------********---------------------------------*/ + $licensedFeatures = PMLicensedFeatures::getSingleton(); if ($sflagAudit && $licensedFeatures->verifyfeature('vtSeHNhT0JnSmo1bTluUVlTYUxUbUFSVStEeXVqc1pEUG5EeXc0MGd2Q3ErYz0=')) { $username = isset($_SESSION['USER_LOGGED']) && $_SESSION['USER_LOGGED'] != '' ? $_SESSION['USER_LOGGED'] : 'Unknow User'; $fullname = isset($_SESSION['USR_FULLNAME']) && $_SESSION['USR_FULLNAME'] != '' ? $_SESSION['USR_FULLNAME'] : '-'; G::log("|". $workspace ."|". $ipClient ."|". $username . "|" . $fullname ."|" . $actionToLog . "|" . $valueToLog, PATH_DATA, "audit.log"); } + /*----------------------------------********---------------------------------*/ } /** diff --git a/workflow/engine/classes/model/CalendarDefinition.php b/workflow/engine/classes/model/CalendarDefinition.php index 6c7b6a9b6..64b4ff0fe 100755 --- a/workflow/engine/classes/model/CalendarDefinition.php +++ b/workflow/engine/classes/model/CalendarDefinition.php @@ -450,5 +450,14 @@ class CalendarDefinition extends BaseCalendarDefinition $oDataset->next(); return $oDataset->getRow(); } + + public function calendarName ($calendarUid) + { + $tr = CalendarDefinitionPeer::retrieveByPK( $calendarUid ); + if ((is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) { + return $tr->getCalendarName(); + } + return false; + } } diff --git a/workflow/engine/classes/model/Users.php b/workflow/engine/classes/model/Users.php index bc1317365..9b7ad4e9b 100755 --- a/workflow/engine/classes/model/Users.php +++ b/workflow/engine/classes/model/Users.php @@ -261,7 +261,7 @@ class Users extends BaseUsers //Calendar $calendar = new Calendar(); $calendarInfo = $calendar->getCalendarFor( $userUid, $userUid, $userUid ); - $aFields["USR_CALENDAR"] = ($calendarInfo["CALENDAR_APPLIED"] != "DEFAULT") ? $calendarInfo["CALENDAR_UID"] : ""; + $aFields["USR_CALENDAR"] = ($calendarInfo["CALENDAR_APPLIED"] != "DEFAULT") ? $calendarInfo["CALENDAR_UID"] : ""; //Photo $pathPhoto = PATH_IMAGES_ENVIRONMENT_USERS . $userUid . ".gif"; @@ -287,10 +287,21 @@ class Users extends BaseUsers $arrayData["birthday"] = $aFields["USR_BIRTHDAY"]; $arrayData["position"] = $aFields["USR_POSITION"]; $arrayData["replacedby"] = $aFields["USR_REPLACED_BY"]; + if(strlen($arrayData["replacedby"] != 0)){ + $oUser = UsersPeer::retrieveByPK( $arrayData["replacedby"] ); + $arrayData["replacedbyfullname"] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname(); + } $arrayData["duedate"] = $aFields["USR_DUE_DATE"]; $arrayData["calendar"] = $aFields["USR_CALENDAR"]; + if(strlen($aFields["USR_CALENDAR"] != 0)){ + $arrayData["calendarname"] = $calendar->calendarName( $aFields["USR_CALENDAR"] ); + } $arrayData["status"] = $aFields["USR_STATUS"]; $arrayData["department"] = $aFields["DEP_UID"]; + if (strlen($arrayData["department"]) != 0) { + $oDepart = DepartmentPeer::retrieveByPk( $arrayData["department"] ); + $arrayData["departmentname"] = $oDepart->getDepTitle(); + } $arrayData["reportsto"] = $aFields["USR_REPORTS_TO"]; $arrayData["userexperience"] = $aFields["USR_UX"]; $arrayData["photo"] = $pathPhoto; diff --git a/workflow/engine/methods/processes/processes_Delete.php b/workflow/engine/methods/processes/processes_Delete.php index e3a5a15b1..3e88c8ccd 100755 --- a/workflow/engine/methods/processes/processes_Delete.php +++ b/workflow/engine/methods/processes/processes_Delete.php @@ -42,9 +42,15 @@ if ($access != 1) { //$oProcessMap = new ProcessMap(); $uids = explode(',', $_POST['PRO_UIDS']); +try { + + foreach ($uids as $uid) { + //Add Audit Log + $oProcess = new Process(); + $process=$oProcess->load($uid); + $nameProcess=$process['PRO_TITLE']; + G::auditLog("DeleteProcess", $nameProcess. ' ('.$uid.')' .' Deleted'); -try { - foreach ($uids as $uid) { //$oProcessMap->deleteProcess($uid); ProcessMaker\Project\Workflow::removeIfExists($uid); ProcessMaker\Project\Bpmn::removeIfExists($uid); @@ -53,7 +59,7 @@ try { $resp = new StdClass(); $resp->status = 0; $resp->msg = 'All process was deleted successfully'; - + echo G::json_encode($resp); } catch (Exception $e) { diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php index b5e6bb253..a9c75b6e6 100644 --- a/workflow/engine/methods/processes/processes_Import_Ajax.php +++ b/workflow/engine/methods/processes/processes_Import_Ajax.php @@ -225,7 +225,7 @@ if ($action == "uploadFileNewProcess") { //1 -exist process $result->ExistGroupsInDatabase = ""; //"" -Default //0 -Dont exist process - //1 -exist process + //1 -exist process $optionGroupExistInDatabase = isset( $_REQUEST["optionGroupExistInDatabase"] ) ? $_REQUEST["optionGroupExistInDatabase"] : null; //!Upload file @@ -254,8 +254,8 @@ if ($action == "uploadFileNewProcess") { //if file is a .pm file continues normally the importing if ($processFileType == "pm") { $oData = $oProcess->getProcessData( $path . $filename ); - } - + } + $importer->throwExceptionIfExistsReservedWordsSql($oData); //!Upload file @@ -303,6 +303,13 @@ if ($action == "uploadFileNewProcess") { //!data ouput $result->sNewProUid = $sProUid; $result->proFileName = $Fields['PRO_FILENAME']; + + //Add Audit Log + $ogetProcess = new Process(); + $getprocess=$ogetProcess->load($oData->process['PRO_UID']); + $nameProcess=$getprocess['PRO_TITLE']; + G::auditLog("ImportProcess", 'PM File Imported '.$nameProcess. ' ('.$oData->process['PRO_UID'].')'); + } catch (Exception $e) { $result->response = $e->getMessage(); $result->catchMessage = $e->getMessage(); diff --git a/workflow/engine/methods/setup/auditLog.php b/workflow/engine/methods/setup/auditLog.php index 873bc590b..80f02f02c 100644 --- a/workflow/engine/methods/setup/auditLog.php +++ b/workflow/engine/methods/setup/auditLog.php @@ -150,7 +150,9 @@ $arrayAction = array( "AssignUserTask" => G::LoadTranslation("ID_ASSIGN_USER_TASK"), "AssignGroupTask" => G::LoadTranslation("ID_ASSIGN_GROUP_TASK"), "DeleteUserTask" => G::LoadTranslation("ID_DELETE_USER_TASK"), - "DeleteGroupTask" => G::LoadTranslation("ID_DELETE_GROUP_TASK") + "DeleteGroupTask" => G::LoadTranslation("ID_DELETE_GROUP_TASK"), + "ImportProcess" => G::LoadTranslation("ID_IMPORT_PROCESS"), + "DeleteProcess" => G::LoadTranslation("ID_DELETE_PROCESS") ); asort($arrayAction); diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 1fb12390e..62bcf8c94 100755 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -77,6 +77,12 @@ class BpmnWorkflow extends Project\Bpmn $this->wp = new Project\Workflow(); $this->wp->create($wpData); + //Add Audit Log + $ogetProcess = new \Process(); + $getprocess=$ogetProcess->load($this->getUid()); + $nameProcess=$getprocess['PRO_TITLE']; + \G::auditLog("ImportProcess", 'PMX File Imported '.$nameProcess. ' ('.$this->getUid().')'); + } catch (\Exception $e) { $prjUid = $this->getUid(); //$this->remove(); diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/WorkflowBpmn.php b/workflow/engine/src/ProcessMaker/Project/Adapter/WorkflowBpmn.php index 80b153d0f..1cee222b2 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/WorkflowBpmn.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/WorkflowBpmn.php @@ -64,6 +64,13 @@ class WorkflowBpmn extends Project\Workflow // At this time we will add a default diagram and process $this->bp->addDiagram(); $this->bp->addProcess(); + + //Add Audit Log + $ogetProcess = new \Process(); + $getprocess=$ogetProcess->load($this->getUid()); + $nameProcess=$getprocess['PRO_TITLE']; + \G::auditLog("ImportProcess", 'BPMN Imported '.$nameProcess. ' ('.$this->getUid().')'); + } catch (\Exception $e) { $prjUid = $this->getUid(); $this->remove(); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project.php b/workflow/engine/src/ProcessMaker/Services/Api/Project.php index 2b30e1bc0..bcb558d51 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project.php @@ -111,7 +111,7 @@ class Project extends Api $outputDir = PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "files" . PATH_SEP . "output" . PATH_SEP; $version = \ProcessMaker\Util\Common::getLastVersion($outputDir . $exporter->getProjectName() . "-*.pmx") + 1; - $outputFilename = $outputDir . sprintf("%s-%s.%s", $exporter->getProjectName(), $version, "pmx"); + $outputFilename = $outputDir . sprintf("%s-%s.%s", str_replace(" ", "_", $exporter->getProjectName()), $version, "pmx"); $exporter->setMetadata("export_version", $version); $exporter->saveExport($outputFilename); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/System.php b/workflow/engine/src/ProcessMaker/Services/Api/System.php index 2c43cd0f7..9e49e74ae 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/System.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/System.php @@ -64,6 +64,7 @@ class System extends Api { try { $enabledFeatures = array(); + /*----------------------------------********---------------------------------*/ $keys = array ('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0='); foreach ($keys as $key) { if (\PMLicensedFeatures @@ -72,6 +73,7 @@ class System extends Api $enabledFeatures[] = $key; } } + /*----------------------------------********---------------------------------*/ return $enabledFeatures; } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); diff --git a/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php b/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php index efdf78e59..89e7aeed6 100644 --- a/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php +++ b/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php @@ -190,8 +190,14 @@ class PmPdo implements \OAuth2\Storage\AuthorizationCodeInterface, /* OAuth2_Storage_UserCredentialsInterface */ public function checkUserCredentials($username, $password) { - if ($user = $this->getUser($username)) { - return $this->checkPassword($user, $password); + $RBAC = \RBAC::getSingleton(); + $RBAC->initRBAC(); + $uid = $RBAC->VerifyLogin($username , $password); + if($uid < 0){ + return false; + } + if($uid != ''){ + return true; } return false; } diff --git a/workflow/public_html/Web.config b/workflow/public_html/Web.config index 7d43ba287..2e853663c 100755 --- a/workflow/public_html/Web.config +++ b/workflow/public_html/Web.config @@ -5,7 +5,7 @@ - +