From 6211c48e44bd173c18ac626726ffc034b75b37b3 Mon Sep 17 00:00:00 2001 From: Brayan Pereyra Date: Wed, 8 Oct 2025 01:50:43 +0000 Subject: [PATCH] Add catch in create user and change propel to elloquent --- workflow/engine/bin/tasks/cliAuthSources.php | 4 +- workflow/engine/classes/LdapSource.php | 144 +++++++++---------- 2 files changed, 66 insertions(+), 82 deletions(-) diff --git a/workflow/engine/bin/tasks/cliAuthSources.php b/workflow/engine/bin/tasks/cliAuthSources.php index cd1f5e1e4..c89bd2e3d 100644 --- a/workflow/engine/bin/tasks/cliAuthSources.php +++ b/workflow/engine/bin/tasks/cliAuthSources.php @@ -743,7 +743,7 @@ function initWorkspace($workspace) { define('PATH_IMAGES_ENVIRONMENT_FILES', PATH_DATA_SITE . 'usersFiles' . PATH_SEP); define('PATH_IMAGES_ENVIRONMENT_USERS', PATH_DATA_SITE . 'usersPhotographies' . PATH_SEP); - if (is_file(PATH_DATA_SITE . PATH_SEP . '.server_info')) { + if (is_file(PATH_DATA_SITE . '.server_info')) { $SERVER_INFO = file_get_contents(PATH_DATA_SITE . PATH_SEP . '.server_info'); $SERVER_INFO = unserialize($SERVER_INFO); @@ -757,7 +757,7 @@ function initWorkspace($workspace) { define('REQUEST_SCHEME', $SERVER_INFO['REQUEST_SCHEME']); } } else { - CLI::logging('WARNING! No server info found!', 'red'); + CLI::logging('WARNING! No server info found!', null, 'red'); } //load Processmaker translations Bootstrap::LoadTranslationObject(SYS_LANG); diff --git a/workflow/engine/classes/LdapSource.php b/workflow/engine/classes/LdapSource.php index 5cc787949..94a2b7d5a 100644 --- a/workflow/engine/classes/LdapSource.php +++ b/workflow/engine/classes/LdapSource.php @@ -1050,34 +1050,17 @@ class LdapSource public function deactivateUser($userUid) { - if (!class_exists('RbacUsers')) { - require_once(PATH_RBAC . 'model/RbacUsers.php'); - } + $rbacUser = new RbacUsers(); + $rbacUser->updateData( + ['USR_STATUS' => '0'], + [['USR_USERNAME', '=', $userUid]] + ); - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - // select set - $c1 = new Criteria('rbac'); - $c1->add(RbacUsersPeer::USR_USERNAME, $userUid); - // update set - $c2 = new Criteria('rbac'); - $c2->add(RbacUsersPeer::USR_STATUS, '0'); - - BasePeer::doUpdate($c1, $c2, $con); - - if (!class_exists('Users')) { - require_once('classes/model/Users.php'); - } - - $con = Propel::getConnection(UsersPeer::DATABASE_NAME); - // select set - $c1 = new Criteria('workflow'); - $c1->add(UsersPeer::USR_USERNAME, $userUid); - // update set - $c2 = new Criteria('workflow'); - $c2->add(UsersPeer::USR_STATUS, 'INACTIVE'); - $c2->add(UsersPeer::DEP_UID, ''); - - BasePeer::doUpdate($c1, $c2, $con); + $users = new User(); + $users->updateData( + ['USR_STATUS' => 'INACTIVE', 'DEP_UID' => ''], + [['USR_USERNAME', '=', $userUid]] + ); } public function userIsTerminated($userUid, $sOuTerminated) @@ -1091,7 +1074,6 @@ class LdapSource break; } } - return $terminated; } @@ -1762,54 +1744,58 @@ class LdapSource public function createUserAndActivate($user, $depUid) { - $rbac = RBAC::getSingleton(); + try { + $rbac = RBAC::getSingleton(); - if ($rbac->userObj == null) { - $rbac->userObj = new RbacUsersModel(); + if ($rbac->userObj == null) { + $rbac->userObj = new RbacUsersModel(); + } + + if ($rbac->rolesObj == null) { + $rbac->rolesObj = new RolesModel(); + } + + if ($rbac->usersRolesObj == null) { + $rbac->usersRolesObj = new UsersRolesModel(); + } + + $sUsername = $user['sUsername']; + $sFullname = $user['sFullname']; + $sFirstname = $user['sFirstname']; + $sLastname = $user['sLastname']; + $sEmail = $user['sEmail']; + $sDn = $user['sDN']; + $usrRole = empty($user['usrRole']) ? 'LURANA_OPERATOR' : $user['usrRole']; + + $data = []; + $data['USR_USERNAME'] = $sUsername; + $data["USR_PASSWORD"] = "00000000000000000000000000000000"; + $data['USR_FIRSTNAME'] = $sFirstname; + $data['USR_LASTNAME'] = $sLastname; + $data['USR_EMAIL'] = $sEmail; + $data['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); + $data['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_BIRTHDAY'] = date('Y-m-d'); + $data['USR_STATUS'] = 1; + $data['USR_AUTH_TYPE'] = 'ldapadvanced'; + $data['UID_AUTH_SOURCE'] = $this->authSourceUid; + $data['USR_AUTH_USER_DN'] = $sDn; + + $userUid = $rbac->createUser($data, $usrRole); + + $data['USR_STATUS'] = 'ACTIVE'; + $data['USR_UID'] = $userUid; + $data['DEP_UID'] = $depUid; + $data['USR_ROLE'] = $usrRole; + + $users = new Users(); + $users->create($data); + + return $userUid; + } catch (Exception $errorException) { + throw $errorException; } - - if ($rbac->rolesObj == null) { - $rbac->rolesObj = new RolesModel(); - } - - if ($rbac->usersRolesObj == null) { - $rbac->usersRolesObj = new UsersRolesModel(); - } - - $sUsername = $user['sUsername']; - $sFullname = $user['sFullname']; - $sFirstname = $user['sFirstname']; - $sLastname = $user['sLastname']; - $sEmail = $user['sEmail']; - $sDn = $user['sDN']; - $usrRole = empty($user['usrRole']) ? 'LURANA_OPERATOR' : $user['usrRole']; - - $data = []; - $data['USR_USERNAME'] = $sUsername; - $data["USR_PASSWORD"] = "00000000000000000000000000000000"; - $data['USR_FIRSTNAME'] = $sFirstname; - $data['USR_LASTNAME'] = $sLastname; - $data['USR_EMAIL'] = $sEmail; - $data['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); - $data['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); - $data['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); - $data['USR_BIRTHDAY'] = date('Y-m-d'); - $data['USR_STATUS'] = 1; - $data['USR_AUTH_TYPE'] = 'ldapadvanced'; - $data['UID_AUTH_SOURCE'] = $this->authSourceUid; - $data['USR_AUTH_USER_DN'] = $sDn; - - $userUid = $rbac->createUser($data, $usrRole); - - $data['USR_STATUS'] = 'ACTIVE'; - $data['USR_UID'] = $userUid; - $data['DEP_UID'] = $depUid; - $data['USR_ROLE'] = $usrRole; - - $users = new Users(); - $users->create($data); - - return $userUid; } public function getDepUidIfExistsDN($currentDN) @@ -2374,11 +2360,8 @@ class LdapSource public function clearManager($usersUIDs) { try { - $criteriaSet = new Criteria('workflow'); - $criteriaSet->add(UsersPeer::USR_REPORTS_TO, ''); - $criteriaWhere = new Criteria('workflow'); - $criteriaWhere->add(UsersPeer::USR_UID, $usersUIDs, Criteria::IN); - BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection('workflow')); + $user = new User(); + $user->updateDataFromListUsersUids(['USR_REPORTS_TO' => ''], $usersUIDs); } catch (Exception $error) { $this->log($this->ldapcnn, $error->getMessage()); } @@ -2421,7 +2404,8 @@ class LdapSource $p = (int) (($count * 100) / $total); $n = (int) ($p / 2); - return "[" . str_repeat("|", $n) . str_repeat(" ", 50 - $n) . "] $p%"; + $times = ((50 - (int)$n) < 0) ? 0 : (50 - (int)$n); + return "[" . str_repeat("|", $n) . str_repeat(" ", $times) . "] $p%"; } catch (Exception $e) { throw $e; }