diff --git a/gulliver/system/class.rbac.php b/gulliver/system/class.rbac.php
index e0e9cc34e..383d4af2a 100644
--- a/gulliver/system/class.rbac.php
+++ b/gulliver/system/class.rbac.php
@@ -211,6 +211,24 @@ class RBAC
'showDynaformListHistory' => ['PM_CASES'],
'dynaformChangeLogViewHistory' => ['PM_CASES'],
'historyDynaformGridPreview' => ['PM_CASES'],
+ ],
+ 'usersAjax.php' => [
+ 'countryList' => ['PM_LOGIN'],
+ 'stateList' => ['PM_LOGIN'],
+ 'locationList' => ['PM_LOGIN'],
+ 'usersList' => ['PM_USERS,PM_EDIT_USER_PROFILE_REPLACED_BY'],
+ 'availableCalendars' => ['PM_LOGIN'],
+ 'rolesList' => ['PM_LOGIN'],
+ 'getUserLogedRole' => ['PM_USERS,PM_EDIT_USER_PROFILE_PASSWORD'],
+ 'languagesList' => ['PM_LOGIN'],
+ 'saveUser' => [], // This action is validated with custom logic in the same page
+ 'savePersonalInfo' => [], // This action is validated with custom logic in the same page
+ 'userData' => [], // This action is validated with custom logic in the same page
+ 'defaultMainMenuOptionList' => ['PM_LOGIN'],
+ 'defaultCasesMenuOptionList' => ['PM_LOGIN'],
+ 'testPassword' => ['PM_USERS,PM_EDIT_USER_PROFILE_PASSWORD'],
+ 'testUsername' => ['PM_USERS,PM_EDIT_USER_PROFILE_USERNAME'],
+ 'passwordValidate' => ['PM_USERS,PM_EDIT_USER_PROFILE_PASSWORD'],
]
];
$this->aliasPermissions['PM_CASES'] = [self::PM_GUEST_CASE];
diff --git a/workflow/engine/methods/users/usersAjax.php b/workflow/engine/methods/users/usersAjax.php
index e2d6737c5..b7f657939 100644
--- a/workflow/engine/methods/users/usersAjax.php
+++ b/workflow/engine/methods/users/usersAjax.php
@@ -1,5 +1,8 @@
xssFilterHard($_POST);
if (isset($_SESSION['USER_LOGGED'])) {
@@ -9,456 +12,482 @@ if (isset($_SESSION['USR_USERNAME'])) {
$_SESSION['USR_USERNAME'] = $filter->xssFilterHard($_SESSION['USR_USERNAME']);
}
-global $RBAC;
+// Initializing variables
+$action = $_POST['action'];
$result = new StdClass();
-switch ($_POST['action']) {
- case 'countryList':
- require_once("classes/model/IsoCountry.php");
- $c = new Criteria();
- $c->add(IsoCountryPeer::IC_UID, null, Criteria::ISNOTNULL);
- $c->addAscendingOrderByColumn(IsoCountryPeer::IC_NAME);
+// Try to execute the requested action
+try {
+ // Checking access permissions for the current action
+ global $RBAC;
+ $RBAC->allows(basename(__FILE__), $action);
- $countries = IsoCountryPeer::doSelect($c);
- foreach ($countries as $rowid => $row) {
- $oData[] = array('IC_UID' => $row->getICUid(), 'IC_NAME' => $row->getICName());
- }
- print(G::json_encode($oData));
- break;
- case 'stateList':
- require_once("classes/model/IsoSubdivision.php");
- $c = new Criteria();
- $country = $_POST['IC_UID'];
- $c->add(IsoSubdivisionPeer::IC_UID, $country, Criteria::EQUAL);
- $c->addAscendingOrderByColumn(IsoSubdivisionPeer::IS_NAME);
- $locations = IsoSubdivisionPeer::doSelect($c);
+ // Executing the action
+ switch ($action) {
+ case 'countryList':
+ $c = new Criteria();
+ $c->add(IsoCountryPeer::IC_UID, null, Criteria::ISNOTNULL);
+ $c->addAscendingOrderByColumn(IsoCountryPeer::IC_NAME);
+ $countries = IsoCountryPeer::doSelect($c);
- $oData = array();
- foreach ($locations as $rowid => $row) {
- if (($row->getISUid() != '') && ($row->getISName() != '')) {
- $oData[] = array('IS_UID' => $row->getISUid(), 'IS_NAME' => $row->getISName());
+ $data = [];
+ foreach ($countries as $row) {
+ $data[] = ['IC_UID' => $row->getICUid(), 'IC_NAME' => $row->getICName()];
}
- }
- print(G::json_encode($oData));
- break;
- case 'locationList':
- require_once("classes/model/IsoLocation.php");
- $c = new Criteria();
- $country = $_POST['IC_UID'];
- $state = $_POST['IS_UID'];
- $c->add(IsoLocationPeer::IC_UID, $country, Criteria::EQUAL);
- $c->add(IsoLocationPeer::IS_UID, $state, Criteria::EQUAL);
- $c->addAscendingOrderByColumn(IsoLocationPeer::IL_NAME);
- $locations = IsoLocationPeer::doSelect($c);
+ print(G::json_encode($data));
+ break;
+ case 'stateList':
+ $c = new Criteria();
+ $country = $_POST['IC_UID'];
+ $c->add(IsoSubdivisionPeer::IC_UID, $country, Criteria::EQUAL);
+ $c->addAscendingOrderByColumn(IsoSubdivisionPeer::IS_NAME);
+ $locations = IsoSubdivisionPeer::doSelect($c);
- $oData = array();
- foreach ($locations as $rowid => $row) {
- if (($row->getILUid() != '') && ($row->getILName() != '')) {
- $oData[] = array('IL_UID' => $row->getILUid(), 'IL_NAME' => $row->getILName());
- }
- }
- print(G::json_encode($oData));
- break;
- case 'usersList':
- $filter = (isset($_POST['filter']))? $_POST['filter'] : '';
-
- $arrayUser = [];
-
- $user = new \ProcessMaker\BusinessModel\User();
- $conf = new Configurations();
-
- $arrayConfFormat = $conf->getFormats();
-
- $arrayCondition = [[UsersPeer::USR_STATUS, ['ACTIVE', 'VACATION'], Criteria::IN]];
-
- if (isset($_POST['USR_UID'])) {
- $arrayCondition[] = [UsersPeer::USR_UID, $_POST['USR_UID'], Criteria::NOT_EQUAL];
- }
-
- $result = $user->getUsers(['condition' => $arrayCondition, 'filter' => $filter], null, null, null, 25);
-
- foreach ($result['data'] as $record) {
- $arrayUser[] = [
- 'USR_UID' => $record['USR_UID'],
- 'USER_FULLNAME' => G::getFormatUserList($arrayConfFormat['format'], $record)
- ];
- }
-
- echo G::json_encode($arrayUser);
- break;
- case 'availableCalendars':
- $calendar = new Calendar();
- $calendarObj = $calendar->getCalendarList(true, true);
- $oData[] = array('CALENDAR_UID' => '', 'CALENDAR_NAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -');
- foreach ($calendarObj['array'] as $rowid => $row) {
- if ($rowid > 0) {
- $oData[] = array('CALENDAR_UID' => $row['CALENDAR_UID'], 'CALENDAR_NAME' => $row['CALENDAR_NAME']);
- }
- }
- print(G::json_encode($oData));
- break;
- case 'rolesList':
- require_once PATH_RBAC . "model/Roles.php";
- $roles = new Roles();
- $rolesData = $roles->getAllRoles();
- foreach ($rolesData as $rowid => $row) {
- $oData[] = array('ROL_UID' => $row['ROL_CODE'], 'ROL_CODE' => $row['ROL_NAME']);
- }
- print(G::json_encode($oData));
- break;
- case 'getUserLogedRole':
- require_once 'classes/model/Users.php';
- $oUser = new Users();
- $aUserLog = $oUser->loadDetailed($_SESSION['USER_LOGGED']);
- print(G::json_encode(array(
- 'USR_UID' => $aUserLog['USR_UID'],
- 'USR_USERNAME' => $aUserLog['USR_USERNAME'],
- 'USR_ROLE' => $aUserLog['USR_ROLE']
- )));
- break;
- case 'languagesList':
- $Translations = new Translation();
- $langs = $Translations->getTranslationEnvironments();
- $oData[] = array('LAN_ID' => '', 'LAN_NAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -');
- foreach ($langs as $lang) {
- $oData[] = array('LAN_ID' => $lang['LOCALE'],'LAN_NAME' => $lang['LANGUAGE']
- );
- }
- print(G::json_encode($oData));
- break;
- case 'saveUser':
- case 'savePersonalInfo':
- try {
- verifyCsrfToken($_POST);
- $user = new \ProcessMaker\BusinessModel\User();
- $form = $_POST;
- $permissionsToSaveData = $user->getPermissionsForEdit();
- $form = $user->checkPermissionForEdit($_SESSION['USER_LOGGED'], $permissionsToSaveData, $form);
-
- switch ($_POST['action']) {
- case 'saveUser':
- if (!$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_USERS')) {
- throw new Exception(G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION', [$_SESSION['USER_LOGGED']]));
- }
- break;
- case 'savePersonalInfo':
- if (!$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_USERS') &&
- !$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_EDITPERSONALINFO')
- ) {
- throw new Exception(G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION', [$_SESSION['USER_LOGGED']]));
- }
- break;
- default:
- throw new Exception(G::LoadTranslation('ID_INVALID_DATA'));
- break;
- }
-
- if (array_key_exists('USR_LOGGED_NEXT_TIME', $form)) {
- $form['USR_LOGGED_NEXT_TIME'] = ($form['USR_LOGGED_NEXT_TIME']) ? 1 : 0;
- }
-
- $userUid = '';
- $auditLogType = '';
- if ($form['USR_UID'] == '') {
- $arrayUserData = $user->create($form);
- $userUid = $arrayUserData['USR_UID'];
- $auditLogType = 'INS';
- } else {
- if (array_key_exists('USR_NEW_PASS', $form) && $form['USR_NEW_PASS'] == '') {
- unset($form['USR_NEW_PASS']);
- }
-
- $result = $user->update($form['USR_UID'], $form, $_SESSION['USER_LOGGED']);
- $userUid = $form['USR_UID'];
- $arrayUserData = $user->getUserRecordByPk($userUid, [], false);
- $auditLogType = 'UPD';
- }
-
- $user->auditLog($auditLogType, array_merge(['USR_UID' => $userUid, 'USR_USERNAME' => $arrayUserData['USR_USERNAME']], $form));
- /* Saving preferences */
- $def_lang = isset($form['PREF_DEFAULT_LANG']) ? $form['PREF_DEFAULT_LANG'] : '';
- $def_menu = isset($form['PREF_DEFAULT_MENUSELECTED']) ? $form['PREF_DEFAULT_MENUSELECTED'] : '';
- $def_cases_menu = isset($form['PREF_DEFAULT_CASES_MENUSELECTED']) ? $form['PREF_DEFAULT_CASES_MENUSELECTED'] : '';
- $oConf = new Configurations();
- $aConf = array('DEFAULT_LANG' => $def_lang, 'DEFAULT_MENU' => $def_menu, 'DEFAULT_CASES_MENU' => $def_cases_menu);
- $oConf->aConfig = $aConf;
- $oConf->saveConfig('USER_PREFERENCES', '', '', $userUid);
-
- if ($user->checkPermission($userUid, 'PM_EDIT_USER_PROFILE_PHOTO')) {
- try {
- $user->uploadImage($userUid);
- } catch (Exception $e) {
- $result = new stdClass();
- $result->success = false;
- $result->fileError = true;
-
- echo G::json_encode($result);
- exit(0);
+ $data = [];
+ foreach ($locations as $row) {
+ if (($row->getISUid() != '') && ($row->getISName() != '')) {
+ $data[] = ['IS_UID' => $row->getISUid(), 'IS_NAME' => $row->getISName()];
}
}
+ print(G::json_encode($data));
+ break;
+ case 'locationList':
+ $c = new Criteria();
+ $country = $_POST['IC_UID'];
+ $state = $_POST['IS_UID'];
+ $c->add(IsoLocationPeer::IC_UID, $country, Criteria::EQUAL);
+ $c->add(IsoLocationPeer::IS_UID, $state, Criteria::EQUAL);
+ $c->addAscendingOrderByColumn(IsoLocationPeer::IL_NAME);
+ $locations = IsoLocationPeer::doSelect($c);
- if ($_SESSION['USER_LOGGED'] == $form['USR_UID']) {
- /* UPDATING SESSION VARIABLES */
- $aUser = $RBAC->userObj->load($_SESSION['USER_LOGGED']);
- $_SESSION['USR_FULLNAME'] = $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'];
+ $data = [];
+ foreach ($locations as $row) {
+ if (($row->getILUid() != '') && ($row->getILName() != '')) {
+ $data[] = ['IL_UID' => $row->getILUid(), 'IL_NAME' => $row->getILName()];
+ }
+ }
+ print(G::json_encode($data));
+ break;
+ case 'usersList':
+ $filter = (isset($_POST['filter'])) ? $_POST['filter'] : '';
+
+ $arrayUser = [];
+
+ $user = new BmUser();
+ $conf = new Configurations();
+
+ $arrayConfFormat = $conf->getFormats();
+
+ $arrayCondition = [[UsersPeer::USR_STATUS, ['ACTIVE', 'VACATION'], Criteria::IN]];
+
+ if (isset($_POST['USR_UID'])) {
+ $arrayCondition[] = [UsersPeer::USR_UID, $_POST['USR_UID'], Criteria::NOT_EQUAL];
}
- $result = new stdClass();
- $result->success = true;
- print(G::json_encode($result));
- } catch (Exception $e) {
- $result = new stdClass();
- $result->success = false;
- $result->error = $e->getMessage();
- print(G::json_encode($result));
- }
- break;
- case 'userData':
- require_once 'classes/model/Users.php';
- $_SESSION['CURRENT_USER'] = $_POST['USR_UID'];
- $oUser = new Users();
- $aFields = $oUser->loadDetailed($_POST['USR_UID']);
+ $results = $user->getUsers(['condition' => $arrayCondition, 'filter' => $filter], null, null, null, 25);
- //Load Calendar options and falue for this user
- $calendar = new Calendar();
- $calendarInfo = $calendar->getCalendarFor($_POST['USR_UID'], $_POST['USR_UID'], $_POST['USR_UID']);
- //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar
- $aFields['USR_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";
- $aFields['CALENDAR_NAME'] = $calendarInfo['CALENDAR_NAME'];
-
- #verifying if it has any preferences on the configurations table
- $oConf = new Configurations();
- $oConf->loadConfig($x, 'USER_PREFERENCES', '', '', $aFields['USR_UID'], '');
-
- $aFields['PREF_DEFAULT_MENUSELECTED'] = '';
- $aFields['PREF_DEFAULT_CASES_MENUSELECTED'] = '';
- $aFields['PREF_DEFAULT_LANG'] = isset($oConf->aConfig['DEFAULT_LANG']) ? $oConf->aConfig['DEFAULT_LANG'] : SYS_LANG;
-
- if (isset($oConf->aConfig['DEFAULT_MENU'])) {
- $aFields['PREF_DEFAULT_MENUSELECTED'] = $oConf->aConfig['DEFAULT_MENU'];
- } else {
- switch ($RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE']) {
- case 'PROCESSMAKER_ADMIN':
- $aFields['PREF_DEFAULT_MENUSELECTED'] = 'PM_SETUP';
- break;
- case 'PROCESSMAKER_OPERATOR':
- $aFields['PREF_DEFAULT_MENUSELECTED'] = 'PM_CASES';
- break;
+ foreach ($results['data'] as $record) {
+ $arrayUser[] = [
+ 'USR_UID' => $record['USR_UID'],
+ 'USER_FULLNAME' => G::getFormatUserList($arrayConfFormat['format'], $record)
+ ];
}
- }
- $aFields['PREF_DEFAULT_CASES_MENUSELECTED'] = isset($oConf->aConfig['DEFAULT_CASES_MENU']) ? $oConf->aConfig['DEFAULT_CASES_MENU'] : '';
-
- if ($aFields['USR_REPLACED_BY'] != '') {
+ echo G::json_encode($arrayUser);
+ break;
+ case 'availableCalendars':
+ $calendar = new Calendar();
+ $calendarObj = $calendar->getCalendarList(true, true);
+ $data = [['CALENDAR_UID' => '', 'CALENDAR_NAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -']];
+ foreach ($calendarObj['array'] as $rowId => $row) {
+ if ($rowId > 0) {
+ $data[] = ['CALENDAR_UID' => $row['CALENDAR_UID'], 'CALENDAR_NAME' => $row['CALENDAR_NAME']];
+ }
+ }
+ print(G::json_encode($data));
+ break;
+ case 'rolesList':
+ $roles = new Roles();
+ $rolesData = $roles->getAllRoles();
+ $data = [];
+ foreach ($rolesData as $rowId => $row) {
+ $data[] = ['ROL_UID' => $row['ROL_CODE'], 'ROL_CODE' => $row['ROL_NAME']];
+ }
+ print(G::json_encode($data));
+ break;
+ case 'getUserLogedRole':
$user = new Users();
- $u = $user->load($aFields['USR_REPLACED_BY']);
- if ($u['USR_STATUS'] == 'CLOSED') {
- $replaced_by = '';
- $aFields['USR_REPLACED_BY'] = '';
- } else {
- $c = new Configurations();
- $arrayConfFormat = $c->getFormats();
-
- $replaced_by = G::getFormatUserList($arrayConfFormat['format'], $u);
+ $userLog = $user->loadDetailed($_SESSION['USER_LOGGED']);
+ print(G::json_encode([
+ 'USR_UID' => $userLog['USR_UID'],
+ 'USR_USERNAME' => $userLog['USR_USERNAME'],
+ 'USR_ROLE' => $userLog['USR_ROLE']
+ ]));
+ break;
+ case 'languagesList':
+ $translations = new Translation();
+ $languages = $translations->getTranslationEnvironments();
+ $data = [['LAN_ID' => '', 'LAN_NAME' => '- ' . G::LoadTranslation('ID_NONE') . ' -']];
+ foreach ($languages as $lang) {
+ $data[] = [
+ 'LAN_ID' => $lang['LOCALE'],
+ 'LAN_NAME' => $lang['LANGUAGE']
+ ];
}
- } else {
- $replaced_by = '';
- }
+ print(G::json_encode($data));
+ break;
+ case 'saveUser':
+ case 'savePersonalInfo':
+ try {
+ verifyCsrfToken($_POST);
+ $user = new BmUser();
+ $form = $_POST;
+ $permissionsToSaveData = $user->getPermissionsForEdit();
+ $form = $user->checkPermissionForEdit($_SESSION['USER_LOGGED'], $permissionsToSaveData, $form);
- $aFields['REPLACED_NAME'] = $replaced_by;
+ switch ($_POST['action']) {
+ case 'saveUser':
+ if (!$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_USERS')) {
+ throw new Exception(G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION',
+ [$_SESSION['USER_LOGGED']]));
+ }
+ break;
+ case 'savePersonalInfo':
+ if (!$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_USERS') &&
+ !$user->checkPermission($_SESSION['USER_LOGGED'], 'PM_EDITPERSONALINFO')
+ ) {
+ throw new Exception(G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION',
+ [$_SESSION['USER_LOGGED']]));
+ }
+ break;
+ default:
+ throw new Exception(G::LoadTranslation('ID_INVALID_DATA'));
+ break;
+ }
- $menuSelected = '';
+ if (array_key_exists('USR_LOGGED_NEXT_TIME', $form)) {
+ $form['USR_LOGGED_NEXT_TIME'] = ($form['USR_LOGGED_NEXT_TIME']) ? 1 : 0;
+ }
- if ($aFields['PREF_DEFAULT_MENUSELECTED'] != '') {
- foreach ($RBAC->aUserInfo['PROCESSMAKER']['PERMISSIONS'] as $permission) {
- if ($aFields['PREF_DEFAULT_MENUSELECTED'] == $permission['PER_CODE']) {
- switch ($permission['PER_CODE']) {
- case 'PM_USERS':
- case 'PM_SETUP':
- $menuSelected = strtoupper(G::LoadTranslation('ID_SETUP'));
- break;
- case 'PM_CASES':
- $menuSelected = strtoupper(G::LoadTranslation('ID_CASES'));
- break;
- case 'PM_FACTORY':
- $menuSelected = strtoupper(G::LoadTranslation('ID_APPLICATIONS'));
- break;
- case 'PM_DASHBOARD':
- $menuSelected = strtoupper(G::LoadTranslation('ID_DASHBOARD'));
- break;
- }
+ $userUid = '';
+ $auditLogType = '';
+ if (empty($form['USR_UID'])) {
+ $arrayUserData = $user->create($form);
+ $userUid = $arrayUserData['USR_UID'];
+ $auditLogType = 'INS';
} else {
- if ($aFields['PREF_DEFAULT_MENUSELECTED'] == 'PM_STRATEGIC_DASHBOARD') {
- $menuSelected = strtoupper(G::LoadTranslation('ID_STRATEGIC_DASHBOARD'));
+ if (array_key_exists('USR_NEW_PASS', $form) && $form['USR_NEW_PASS'] == '') {
+ unset($form['USR_NEW_PASS']);
+ }
+
+ $results = $user->update($form['USR_UID'], $form, $_SESSION['USER_LOGGED']);
+ $userUid = $form['USR_UID'];
+ $arrayUserData = $user->getUserRecordByPk($userUid, [], false);
+ $auditLogType = 'UPD';
+ }
+
+ $user->auditLog($auditLogType,
+ array_merge(['USR_UID' => $userUid, 'USR_USERNAME' => $arrayUserData['USR_USERNAME']], $form));
+ /* Saving preferences */
+ $def_lang = isset($form['PREF_DEFAULT_LANG']) ? $form['PREF_DEFAULT_LANG'] : '';
+ $def_menu = isset($form['PREF_DEFAULT_MENUSELECTED']) ? $form['PREF_DEFAULT_MENUSELECTED'] : '';
+ $def_cases_menu = isset($form['PREF_DEFAULT_CASES_MENUSELECTED']) ? $form['PREF_DEFAULT_CASES_MENUSELECTED'] : '';
+ $configuration = new Configurations();
+ $configuration->aConfig = [
+ 'DEFAULT_LANG' => $def_lang,
+ 'DEFAULT_MENU' => $def_menu,
+ 'DEFAULT_CASES_MENU' => $def_cases_menu
+ ];
+ $configuration->saveConfig('USER_PREFERENCES', '', '', $userUid);
+
+ if ($user->checkPermission($userUid, 'PM_EDIT_USER_PROFILE_PHOTO')) {
+ try {
+ $user->uploadImage($userUid);
+ } catch (Exception $e) {
+ $result->success = false;
+ $result->fileError = true;
+
+ echo G::json_encode($result);
+ exit(0);
+ }
+ }
+
+ if ($_SESSION['USER_LOGGED'] == $form['USR_UID']) {
+ /* UPDATING SESSION VARIABLES */
+ $userInfo = $RBAC->userObj->load($_SESSION['USER_LOGGED']);
+ $_SESSION['USR_FULLNAME'] = $userInfo['USR_FIRSTNAME'] . ' ' . $userInfo['USR_LASTNAME'];
+ }
+
+ $result->success = true;
+ print(G::json_encode($result));
+ } catch (Exception $e) {
+ $result->success = false;
+ $result->error = $e->getMessage();
+ print(G::json_encode($result));
+ }
+ break;
+ case 'userData':
+ // Check if the user logged has the correct permission
+ if (($_POST['USR_UID'] !== $_SESSION['USER_LOGGED']) && ($RBAC->userCanAccess('PM_USERS') !== 1)) {
+ throw new Exception(G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION', [$_SESSION['USER_LOGGED']]));
+ }
+
+ $_SESSION['CURRENT_USER'] = $_POST['USR_UID'];
+ $user = new Users();
+ $fields = $user->loadDetailed($_POST['USR_UID']);
+
+ //Load Calendar options and falue for this user
+ $calendar = new Calendar();
+ $calendarInfo = $calendar->getCalendarFor($_POST['USR_UID'], $_POST['USR_UID'], $_POST['USR_UID']);
+ //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar
+ $fields['USR_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";
+ $fields['CALENDAR_NAME'] = $calendarInfo['CALENDAR_NAME'];
+
+ //verifying if it has any preferences on the configurations table
+ $configuration = new Configurations();
+ $configuration->loadConfig($x, 'USER_PREFERENCES', '', '', $fields['USR_UID'], '');
+
+ $fields['PREF_DEFAULT_MENUSELECTED'] = '';
+ $fields['PREF_DEFAULT_CASES_MENUSELECTED'] = '';
+ $fields['PREF_DEFAULT_LANG'] = isset($configuration->aConfig['DEFAULT_LANG']) ? $configuration->aConfig['DEFAULT_LANG'] : SYS_LANG;
+
+ if (isset($configuration->aConfig['DEFAULT_MENU'])) {
+ $fields['PREF_DEFAULT_MENUSELECTED'] = $configuration->aConfig['DEFAULT_MENU'];
+ } else {
+ switch ($RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE']) {
+ case 'PROCESSMAKER_ADMIN':
+ $fields['PREF_DEFAULT_MENUSELECTED'] = 'PM_SETUP';
+ break;
+ case 'PROCESSMAKER_OPERATOR':
+ $fields['PREF_DEFAULT_MENUSELECTED'] = 'PM_CASES';
+ break;
+ }
+ }
+
+ $fields['PREF_DEFAULT_CASES_MENUSELECTED'] = isset($configuration->aConfig['DEFAULT_CASES_MENU']) ? $configuration->aConfig['DEFAULT_CASES_MENU'] : '';
+
+ if ($fields['USR_REPLACED_BY'] != '') {
+ $user = new Users();
+ $u = $user->load($fields['USR_REPLACED_BY']);
+ if ($u['USR_STATUS'] == 'CLOSED') {
+ $replaced_by = '';
+ $fields['USR_REPLACED_BY'] = '';
+ } else {
+ $c = new Configurations();
+ $arrayConfFormat = $c->getFormats();
+
+ $replaced_by = G::getFormatUserList($arrayConfFormat['format'], $u);
+ }
+ } else {
+ $replaced_by = '';
+ }
+
+ $fields['REPLACED_NAME'] = $replaced_by;
+
+ $menuSelected = '';
+
+ if ($fields['PREF_DEFAULT_MENUSELECTED'] != '') {
+ foreach ($RBAC->aUserInfo['PROCESSMAKER']['PERMISSIONS'] as $permission) {
+ if ($fields['PREF_DEFAULT_MENUSELECTED'] == $permission['PER_CODE']) {
+ switch ($permission['PER_CODE']) {
+ case 'PM_USERS':
+ case 'PM_SETUP':
+ $menuSelected = strtoupper(G::LoadTranslation('ID_SETUP'));
+ break;
+ case 'PM_CASES':
+ $menuSelected = strtoupper(G::LoadTranslation('ID_CASES'));
+ break;
+ case 'PM_FACTORY':
+ $menuSelected = strtoupper(G::LoadTranslation('ID_APPLICATIONS'));
+ break;
+ case 'PM_DASHBOARD':
+ $menuSelected = strtoupper(G::LoadTranslation('ID_DASHBOARD'));
+ break;
+ }
+ } else {
+ if ($fields['PREF_DEFAULT_MENUSELECTED'] == 'PM_STRATEGIC_DASHBOARD') {
+ $menuSelected = strtoupper(G::LoadTranslation('ID_STRATEGIC_DASHBOARD'));
+ }
}
}
}
- }
- $aFields['MENUSELECTED_NAME'] = $menuSelected;
+ $fields['MENUSELECTED_NAME'] = $menuSelected;
- $oMenu = new Menu();
- $oMenu->load('cases');
- $casesMenuSelected = '';
+ $menu = new Menu();
+ $menu->load('cases');
+ $casesMenuSelected = '';
- if ($aFields['PREF_DEFAULT_CASES_MENUSELECTED'] != '') {
- foreach ($oMenu->Id as $i => $item) {
- if ($aFields['PREF_DEFAULT_CASES_MENUSELECTED'] == $item) {
- $casesMenuSelected = $oMenu->Labels[$i];
+ if ($fields['PREF_DEFAULT_CASES_MENUSELECTED'] != '') {
+ foreach ($menu->Id as $i => $item) {
+ if ($fields['PREF_DEFAULT_CASES_MENUSELECTED'] == $item) {
+ $casesMenuSelected = $menu->Labels[$i];
+ }
}
}
- }
- require_once 'classes/model/Users.php';
- $oUser = new Users();
- $aUserLog = $oUser->loadDetailed($_SESSION['USER_LOGGED']);
- $aFields['USER_LOGGED_NAME'] = $aUserLog['USR_USERNAME'];
- $aFields['USER_LOGGED_ROLE'] = $aUserLog['USR_ROLE'];
+ $user = new Users();
+ $userLog = $user->loadDetailed($_SESSION['USER_LOGGED']);
+ $fields['USER_LOGGED_NAME'] = $userLog['USR_USERNAME'];
+ $fields['USER_LOGGED_ROLE'] = $userLog['USR_ROLE'];
- $aFields['CASES_MENUSELECTED_NAME'] = $casesMenuSelected;
+ $fields['CASES_MENUSELECTED_NAME'] = $casesMenuSelected;
- require_once 'classes/model/UsersProperties.php';
- $oUserProperty = new UsersProperties();
- $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($aFields['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array($oUser->getUsrPassword()))));
- $aFields['USR_LOGGED_NEXT_TIME'] = $aUserProperty['USR_LOGGED_NEXT_TIME'];
+ $userProperties = new UsersProperties();
+ $properties = $userProperties->loadOrCreateIfNotExists($fields['USR_UID'],
+ ['USR_PASSWORD_HISTORY' => serialize([$user->getUsrPassword()])]);
+ $fields['USR_LOGGED_NEXT_TIME'] = $properties['USR_LOGGED_NEXT_TIME'];
- if (array_key_exists('USR_PASSWORD', $aFields)) {
- unset($aFields['USR_PASSWORD']);
- }
-
- $userPermissions = new \ProcessMaker\BusinessModel\User();
- $permissions = $userPermissions->loadDetailedPermissions($aFields);
-
- $result->success = true;
- $result->user = $aFields;
- $result->permission = $permissions;
-
- print(G::json_encode($result));
- break;
- case 'defaultMainMenuOptionList':
- foreach ($RBAC->aUserInfo['PROCESSMAKER']['PERMISSIONS'] as $permission) {
- switch ($permission['PER_CODE']) {
- case 'PM_USERS':
- case 'PM_SETUP':
- $rows[] = array('id' => 'PM_SETUP', 'name' => strtoupper(G::LoadTranslation('ID_SETUP'))
- );
- break;
- case 'PM_CASES':
- $rows[] = array('id' => 'PM_CASES', 'name' => strtoupper(G::LoadTranslation('ID_CASES'))
- );
- break;
- case 'PM_FACTORY':
- $rows[] = array('id' => 'PM_FACTORY', 'name' => strtoupper(G::LoadTranslation('ID_APPLICATIONS'))
- );
- break;
- case 'PM_DASHBOARD':
- $rows[] = array('id' => 'PM_DASHBOARD', 'name' => strtoupper(G::LoadTranslation('ID_DASHBOARD'))
- );
- /*----------------------------------********---------------------------------*/
- // NEW DASHBOARD MODULE
- $licensedFeatures = PMLicensedFeatures::getSingleton();
- if ($licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
- $rows[] = array('id' => 'PM_STRATEGIC_DASHBOARD', 'name' => strtoupper(G::LoadTranslation('ID_STRATEGIC_DASHBOARD'))
- );
- }
- /*----------------------------------********---------------------------------*/
- break;
+ if (array_key_exists('USR_PASSWORD', $fields)) {
+ unset($fields['USR_PASSWORD']);
}
- }
- print(G::json_encode($rows));
- break;
- case 'defaultCasesMenuOptionList':
- $oMenu = new Menu();
- $oMenu->load('cases');
+ $userPermissions = new BmUser();
+ $permissions = $userPermissions->loadDetailedPermissions($fields);
- foreach ($oMenu->Id as $i => $item) {
- if ($oMenu->Types[$i] != 'blockHeader') {
- $rowsCasesMenu[] = array('id' => $item, 'name' => $oMenu->Labels[$i]);
+ $result->success = true;
+ $result->user = $fields;
+ $result->permission = $permissions;
+
+ print(G::json_encode($result));
+ break;
+ case 'defaultMainMenuOptionList':
+ $rows = [];
+ foreach ($RBAC->aUserInfo['PROCESSMAKER']['PERMISSIONS'] as $permission) {
+ switch ($permission['PER_CODE']) {
+ case 'PM_USERS':
+ case 'PM_SETUP':
+ $rows[] = [
+ 'id' => 'PM_SETUP',
+ 'name' => strtoupper(G::LoadTranslation('ID_SETUP'))
+ ];
+ break;
+ case 'PM_CASES':
+ $rows[] = [
+ 'id' => 'PM_CASES',
+ 'name' => strtoupper(G::LoadTranslation('ID_CASES'))
+ ];
+ break;
+ case 'PM_FACTORY':
+ $rows[] = [
+ 'id' => 'PM_FACTORY',
+ 'name' => strtoupper(G::LoadTranslation('ID_APPLICATIONS'))
+ ];
+ break;
+ case 'PM_DASHBOARD':
+ $rows[] = [
+ 'id' => 'PM_DASHBOARD',
+ 'name' => strtoupper(G::LoadTranslation('ID_DASHBOARD'))
+ ];
+ /*----------------------------------********---------------------------------*/
+ // NEW DASHBOARD MODULE
+ $licensedFeatures = PMLicensedFeatures::getSingleton();
+ if ($licensedFeatures->verifyfeature('r19Vm5DK1UrT09MenlLYjZxejlhNUZ1b1NhV0JHWjBsZEJ6dnpJa3dTeWVLVT0=')) {
+ $rows[] = [
+ 'id' => 'PM_STRATEGIC_DASHBOARD',
+ 'name' => strtoupper(G::LoadTranslation('ID_STRATEGIC_DASHBOARD'))
+ ];
+ }
+ /*----------------------------------********---------------------------------*/
+ break;
+ }
}
- }
- print(G::json_encode($rowsCasesMenu));
- break;
- case 'testPassword':
- require_once 'classes/model/UsersProperties.php';
- $userProperty = new UsersProperties();
+ print(G::json_encode($rows));
+ break;
+ case 'defaultCasesMenuOptionList':
+ $menu = new Menu();
+ $menu->load('cases');
- $fields = [];
- $color = '';
- $img = '';
- $dateNow = date('Y-m-d H:i:s');
- $errorInPassword = $userProperty->validatePassword($_POST['PASSWORD_TEXT'], $dateNow, 0);
-
- if (!empty($errorInPassword)) {
- $img = '/images/delete.png';
- $color = 'red';
- if (!defined('NO_DISPLAY_USERNAME')) {
- define('NO_DISPLAY_USERNAME', 1);
+ foreach ($menu->Id as $i => $item) {
+ if ($menu->Types[$i] != 'blockHeader') {
+ $rowsCasesMenu[] = ['id' => $item, 'name' => $menu->Labels[$i]];
+ }
}
- $fields = $userProperty->getMessageValidatePassword($errorInPassword);
- $fields['STATUS'] = false;
- } else {
- $color = 'green';
- $img = '/images/dialog-ok-apply.png';
- $fields['DESCRIPTION'] = G::LoadTranslation('ID_PASSWORD_COMPLIES_POLICIES') . '';
- $fields['STATUS'] = true;
- }
- $span = '';
- $gif = '
';
- $fields['DESCRIPTION'] = $span . $gif . $fields['DESCRIPTION'];
- print(G::json_encode($fields));
- break;
- case 'testUsername':
- require_once 'classes/model/Users.php';
- $_POST['NEW_USERNAME'] = trim($_POST['NEW_USERNAME']);
- $USR_UID = isset($_POST['USR_UID']) ? $_POST['USR_UID'] : '';
+ print(G::json_encode($rowsCasesMenu));
+ break;
+ case 'testPassword':
+ $userProperty = new UsersProperties();
- $response = array("success" => true);
+ $fields = [];
+ $color = '';
+ $img = '';
+ $dateNow = date('Y-m-d H:i:s');
+ $errorInPassword = $userProperty->validatePassword($_POST['PASSWORD_TEXT'], $dateNow, 0);
- $oCriteria = new Criteria();
- $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
+ if (!empty($errorInPassword)) {
+ $img = '/images/delete.png';
+ $color = 'red';
+ if (!defined('NO_DISPLAY_USERNAME')) {
+ define('NO_DISPLAY_USERNAME', 1);
+ }
+ $fields = $userProperty->getMessageValidatePassword($errorInPassword);
+ $fields['STATUS'] = false;
+ } else {
+ $color = 'green';
+ $img = '/images/dialog-ok-apply.png';
+ $fields['DESCRIPTION'] = G::LoadTranslation('ID_PASSWORD_COMPLIES_POLICIES') . '';
+ $fields['STATUS'] = true;
+ }
+ $span = '';
+ $gif = '
';
+ $fields['DESCRIPTION'] = $span . $gif . $fields['DESCRIPTION'];
+ print(G::json_encode($fields));
+ break;
+ case 'testUsername':
+ $_POST['NEW_USERNAME'] = trim($_POST['NEW_USERNAME']);
+ $usrUid = isset($_POST['USR_UID']) ? $_POST['USR_UID'] : '';
- $oCriteria->add(UsersPeer::USR_USERNAME, utf8_encode($_POST['NEW_USERNAME']));
- if ($USR_UID != '') {
- $oCriteria->add(UsersPeer::USR_UID, array($_POST['USR_UID']), Criteria::NOT_IN);
- }
- $oDataset = UsersPeer::doSelectRS($oCriteria);
- $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
- $oDataset->next();
- $aRow = $oDataset->getRow();
+ $response = ["success" => true];
- if (is_array($aRow) || $_POST['NEW_USERNAME'] == '') {
- $color = 'red';
- $img = '/images/delete.png';
- $dataVar['USER_ID'] = $_POST['NEW_USERNAME'];
- $text = G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', $dataVar);
- $text = ($_POST['NEW_USERNAME'] == '') ? G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME') : $text;
- $response['exists'] = true;
- } else {
- $color = 'green';
- $img = '/images/dialog-ok-apply.png';
- $text = G::LoadTranslation('ID_USERNAME_CORRECT');
- $response['exists'] = false;
- }
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(UsersPeer::USR_USERNAME);
- $span = '';
- $gif = '
';
- $response['descriptionText'] = $span . $gif . $text . '';
- echo G::json_encode($response);
- break;
- case "passwordValidate":
- $messageResultLogin = "";
- $password = $_POST["password"];
- $resultLogin = $RBAC->VerifyLogin($_SESSION["USR_USERNAME"], $password);
+ $criteria->add(UsersPeer::USR_USERNAME, utf8_encode($_POST['NEW_USERNAME']));
+ if ($usrUid != '') {
+ $criteria->add(UsersPeer::USR_UID, [$_POST['USR_UID']], Criteria::NOT_IN);
+ }
+ $dataSet = UsersPeer::doSelectRS($criteria);
+ $dataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $dataSet->next();
+ $row = $dataSet->getRow();
- if ($resultLogin == $_SESSION["USER_LOGGED"]) {
- $messageResultLogin = "OK";
- } else {
- $messageResultLogin = "ERROR";
- }
+ if (is_array($row) || $_POST['NEW_USERNAME'] == '') {
+ $color = 'red';
+ $img = '/images/delete.png';
+ $dataVar = ['USER_ID' => $_POST['NEW_USERNAME']];
+ $text = G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', $dataVar);
+ $text = ($_POST['NEW_USERNAME'] == '') ? G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME') : $text;
+ $response['exists'] = true;
+ } else {
+ $color = 'green';
+ $img = '/images/dialog-ok-apply.png';
+ $text = G::LoadTranslation('ID_USERNAME_CORRECT');
+ $response['exists'] = false;
+ }
- $response = array();
- $response["result"] = $messageResultLogin;
- echo G::json_encode($response);
- break;
+ $span = '';
+ $gif = '
';
+ $response['descriptionText'] = $span . $gif . $text . '';
+ echo G::json_encode($response);
+ break;
+ case "passwordValidate":
+ $messageResultLogin = "";
+ $password = $_POST["password"];
+ $resultLogin = $RBAC->VerifyLogin($_SESSION["USR_USERNAME"], $password);
+
+ if ($resultLogin == $_SESSION["USER_LOGGED"]) {
+ $messageResultLogin = "OK";
+ } else {
+ $messageResultLogin = "ERROR";
+ }
+
+ $response = [];
+ $response["result"] = $messageResultLogin;
+ echo G::json_encode($response);
+ break;
+ }
+} catch (Exception $e) {
+ $result->success = false;
+ $result->error = $e->getMessage();
+ echo G::json_encode($result);
}