From 638cdee160699b1f4de21212680071907101fe12 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Wed, 20 Mar 2013 10:58:19 -0400 Subject: [PATCH] Add hook before create user --- rbac/engine/classes/model/RbacUsers.php | 8 ++++++++ workflow/engine/classes/class.plugin.php | 3 +++ workflow/engine/classes/class.pmFunctions.php | 7 +++++-- workflow/engine/classes/class.wsBase.php | 7 ++++++- .../methods/authSources/authSources_ImportUsers.php | 8 +++++++- workflow/engine/methods/services/soap2.php | 6 +++++- workflow/engine/methods/users/usersAjax.php | 6 +++++- 7 files changed, 39 insertions(+), 6 deletions(-) diff --git a/rbac/engine/classes/model/RbacUsers.php b/rbac/engine/classes/model/RbacUsers.php index 985d063fb..56beb4f0d 100755 --- a/rbac/engine/classes/model/RbacUsers.php +++ b/rbac/engine/classes/model/RbacUsers.php @@ -193,6 +193,14 @@ class RbacUsers extends BaseRbacUsers public function create($aData) { + $pluginRegistry = & PMPluginRegistry::getSingleton(); + if ($pluginRegistry->existsTrigger(PM_BEFORE_CREATE_USER)) { + try { + $pluginRegistry->executeTriggers(PM_BEFORE_CREATE_USER); + } catch(Exception $error) { + throw new Exception($error->getMessage()); + } + } $oConnection = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); try { $oRBACUsers = new RbacUsers(); diff --git a/workflow/engine/classes/class.plugin.php b/workflow/engine/classes/class.plugin.php index f0ab7ed4c..986d773d0 100755 --- a/workflow/engine/classes/class.plugin.php +++ b/workflow/engine/classes/class.plugin.php @@ -41,6 +41,9 @@ define('PM_UPLOAD_DOCUMENT_BEFORE', 1012); define('PM_CREATE_NEW_DELEGATION', 1013); define('PM_SINGLE_SIGN_ON', 1014); define('PM_GET_CASES_AJAX_LISTENER', 1015); +define('PM_BEFORE_CREATE_USER', 1016); + + /** * @package workflow.engine.classes diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 67d8c42f2..4c65ee37c 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1137,8 +1137,11 @@ function WSCreateUser ($userId, $password, $firstname, $lastname, $email, $role, $params = array ("sessionId" => $sessionId,"userId" => $userId,"firstname" => $firstname,"lastname" => $lastname,"email" => $email,"role" => $role,"password" => $password,"dueDate" => $dueDate,"status" => $status ); - $result = $client->__soapCall( "CreateUser", array ($params - ) ); + try { + $result = $client->__soapCall( "CreateUser", array ($params) ); + } catch(Exception $oError) { + return $oError->getMessage(); + } $fields["status_code"] = $result->status_code; $fields["message"] = $result->message; diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 25064f2e2..23dc49adb 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1058,7 +1058,12 @@ class wsBase $arrayData["USR_AUTH_USER_DN"] = ""; $arrayData["USR_STATUS"] = ($status == "ACTIVE") ? 1 : 0; - $userUid = $RBAC->createUser( $arrayData, $strRole ); + try { + $userUid = $RBAC->createUser( $arrayData, $strRole ); + } catch(Exception $oError) { + $result = new wsCreateUserResponse(100, $oError->getMessage(), null ); + return $result; + } $arrayData["USR_UID"] = $userUid; $arrayData["USR_STATUS"] = $status; diff --git a/workflow/engine/methods/authSources/authSources_ImportUsers.php b/workflow/engine/methods/authSources/authSources_ImportUsers.php index dd3a91115..d42ed6e62 100755 --- a/workflow/engine/methods/authSources/authSources_ImportUsers.php +++ b/workflow/engine/methods/authSources/authSources_ImportUsers.php @@ -62,7 +62,13 @@ foreach ($_POST['aUsers'] as $sUser) { $aUser['sDN'] = str_replace( $match, $newMatch, $aUser['sDN'] ); } $aData['USR_AUTH_USER_DN'] = $aUser['sDN']; - $sUserUID = $RBAC->createUser( $aData, 'PROCESSMAKER_OPERATOR' ); + try { + $sUserUID = $RBAC->createUser( $aData, 'PROCESSMAKER_OPERATOR' ); + } catch(Exception $oError) { + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => $oError->getMessage()) ); + G::RenderPage("publish", "blank"); + } $aData['USR_STATUS'] = 'ACTIVE'; $aData['USR_UID'] = $sUserUID; $aData['USR_PASSWORD'] = md5( $sUserUID ); //fake :p diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php index 4da58fadf..2aebcbe72 100755 --- a/workflow/engine/methods/services/soap2.php +++ b/workflow/engine/methods/services/soap2.php @@ -847,7 +847,11 @@ function CreateUser ($params) $ws = new wsBase(); - $res = $ws->createUser( $params->userId, $params->firstname, $params->lastname, $params->email, $params->role, $params->password, ((isset( $params->dueDate )) ? $params->dueDate : null), ((isset( $params->status )) ? $params->status : null) ); + try { + $res = $ws->createUser( $params->userId, $params->firstname, $params->lastname, $params->email, $params->role, $params->password, ((isset( $params->dueDate )) ? $params->dueDate : null), ((isset( $params->status )) ? $params->status : null) ); + } catch(Exception $oError) { + return $oError->getMessage(); + } return $res; } diff --git a/workflow/engine/methods/users/usersAjax.php b/workflow/engine/methods/users/usersAjax.php index 11009ad94..b27a37566 100644 --- a/workflow/engine/methods/users/usersAjax.php +++ b/workflow/engine/methods/users/usersAjax.php @@ -147,7 +147,11 @@ switch ($_POST['action']) { //fixing bug in inactive user when the admin create a new user. $statusWF = $form['USR_STATUS']; $aData['USR_STATUS'] = $form['USR_STATUS'] == 'ACTIVE' ? 1 : 0; - $sUserUID = $RBAC->createUser($aData, $form['USR_ROLE']); + try { + $sUserUID = $RBAC->createUser($aData, $form['USR_ROLE']); + } catch(Exception $oError) { + throw new Exception($oError->getMessage()); + } $aData['USR_STATUS'] = $statusWF; $aData['USR_UID'] = $sUserUID; $aData['USR_PASSWORD'] = md5($sUserUID); //fake :p