diff --git a/workflow/engine/methods/login/forgotPassword.php b/workflow/engine/methods/login/forgotPassword.php new file mode 100644 index 000000000..f05b963b3 --- /dev/null +++ b/workflow/engine/methods/login/forgotPassword.php @@ -0,0 +1,27 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + $G_PUBLISH = new Publisher (); + $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/forgotPassword', '', $aFields, SYS_URI . 'login/retrivePassword.php'); + G::RenderPage ( "publish" ); \ No newline at end of file diff --git a/workflow/engine/methods/login/retrivePassword.php b/workflow/engine/methods/login/retrivePassword.php new file mode 100644 index 000000000..a65fc4bf2 --- /dev/null +++ b/workflow/engine/methods/login/retrivePassword.php @@ -0,0 +1,116 @@ +getByUsername($data['USR_USERNAME']); +if($aFields['USR_EMAIL']==$data['USR_EMAIL']) +{ + require_once ( "classes/class.pmFunctions.php" ); + $aSetup = getEmailConfiguration(); + // generate a new password + $newPass=G::generate_password(); + require_once 'classes/model/Users.php'; + $oUser = new Users(); + $aData['USR_UID'] = $aFields['USR_UID']; + $aData['USR_PASSWORD'] = md5($newPass); + $RBAC->updateUser($aData,'PROCESSMAKER_ADMIN'); + G::LoadClass("system"); + $sFrom = ($aSetup['MESS_ACCOUNT'] != '' ? $aSetup['MESS_ACCOUNT'] . ' ' : '') . '<' . $aSetup['MESS_ACCOUNT'] . '>'; + $sSubject = G::LoadTranslation('ID_RESET_PASSWORD').' - ProcessMaker' ; + $msg = '

'.G::LoadTranslation('ID_THANKS_USE_SERVICES').'.

'; + $msg .='

'.G::LoadTranslation('ID_YOUR_USERMANE_IS').' : '.$aFields['USR_USERNAME'].'

'; + $msg .='

'.G::LoadTranslation('ID_YOUR_PASSWORD_IS').' : '.$newPass.'

'; + switch ($aSetup['MESS_ENGINE']) { + case 'MAIL': + $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_1'); + break; + case 'PHPMAILER': + $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_2'); + break; + case 'OPENMAIL': + $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_3'); + break; + } + + $sBody = " + + + + +
$msg
+

This Business Process is powered by ProcessMaker ver. ".System::getVersion().".
+ www.processmaker.com
"; + + G::LoadClass('spool'); + $oSpool = new spoolRun(); + + $oSpool->setConfig( array( + 'MESS_ENGINE' => $aSetup['MESS_ENGINE'], + 'MESS_SERVER' => $aSetup['MESS_SERVER'], + 'MESS_PORT' => $aSetup['MESS_PORT'], + 'MESS_ACCOUNT' => $aSetup['MESS_ACCOUNT'], + 'MESS_PASSWORD' => $aSetup['MESS_PASSWORD'], + 'SMTPAuth' => $aSetup['MESS_RAUTH'], + 'SMTPSecure' => $aSetup['SMTPSecure'] + )); + + $oSpool->create(array( + 'msg_uid' => '', + 'app_uid' => '', + 'del_index' => 0, + 'app_msg_type' => 'TEST', + 'app_msg_subject' => $sSubject, + 'app_msg_from' => $sFrom, + 'app_msg_to' => $data['USR_EMAIL'], + 'app_msg_body' => $sBody, + 'app_msg_cc' => '', + 'app_msg_bcc' => '', + 'app_msg_attach' => '', + 'app_msg_template' => '', + 'app_msg_status' => 'pending', + 'app_msg_attach'=>'' + )); + + $oSpool->sendMail(); + G::header ("location: login.html"); +} + +else +{ + $msg=G::LoadTranslation('ID_USER_NOT_REGISTER'); + G::SendTemporalMessage ($msg, "warning"); + $G_PUBLISH = new Publisher (); + $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/forgotPassword', '','', SYS_URI . 'login/authentication.php' ); + G::RenderPage ( "publish" ); + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workflow/engine/methods/setup/loginSettings.php b/workflow/engine/methods/setup/loginSettings.php new file mode 100644 index 000000000..0942371ac --- /dev/null +++ b/workflow/engine/methods/setup/loginSettings.php @@ -0,0 +1,44 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + G::loadClass('configuration'); + $oConf = new Configurations; + + $oHeadPublisher =& headPublisher::getSingleton(); + $oServerConf =& serverConf::getSingleton(); + + $oHeadPublisher->addExtJsScript('setup/loginSettings', true ); //adding a javascript file .js + $oHeadPublisher->addContent('setup/loginSettings'); //adding a html file .html. + + $oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS',''); + + $defaultOption = isset($oConf->aConfig['login_enableForgotPassword'])? $oConf->aConfig['login_enableForgotPassword']: false; + $defaultLanguaje = isset($oConf->aConfig['login_defaultLanguage'])? $oConf->aConfig['login_defaultLanguage']: 'en'; + + + $oHeadPublisher->assign( 'currentLang', $defaultLanguaje); //current language + $oHeadPublisher->assign( 'currentOption', $defaultOption); //current option + + G::RenderPage('publish', 'extJs'); + diff --git a/workflow/engine/methods/setup/loginSettingsAjax.php b/workflow/engine/methods/setup/loginSettingsAjax.php new file mode 100644 index 000000000..92f9d94c0 --- /dev/null +++ b/workflow/engine/methods/setup/loginSettingsAjax.php @@ -0,0 +1,37 @@ +rows = Array(); + + $langs = $Translations->getTranslationEnvironments(); + foreach($langs as $lang){ + $result->rows[] = Array('LAN_ID'=>$lang['LOCALE'], 'LAN_NAME'=>$lang['LANGUAGE']); + } + + print(G::json_encode($result)); + break; + case 'saveSettings': + + G::LoadClass('configuration'); + $conf = new Configurations; + $conf->loadConfig($obj, 'ENVIRONMENT_SETTINGS',''); + + $conf->aConfig['login_enableForgotPassword'] = $_POST['acceptRP']; + $conf->aConfig['login_defaultLanguage'] = $_POST['lang']; + $conf->saveConfig('ENVIRONMENT_SETTINGS', ''); + + $response->success = true; + if ($_POST['acceptRP']) + $response->enable = true; + else + $response->enable = false; + + echo G::json_encode($response); + + break; + } \ No newline at end of file diff --git a/workflow/engine/templates/setup/loginSettings.html b/workflow/engine/templates/setup/loginSettings.html new file mode 100644 index 000000000..c1e93a9c1 --- /dev/null +++ b/workflow/engine/templates/setup/loginSettings.html @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/workflow/engine/templates/setup/loginSettings.js b/workflow/engine/templates/setup/loginSettings.js new file mode 100644 index 000000000..b150b17f6 --- /dev/null +++ b/workflow/engine/templates/setup/loginSettings.js @@ -0,0 +1,101 @@ +Ext.onReady(function(){ + + var cmbLanguages = new Ext.form.ComboBox({ + fieldLabel : TRANSLATIONS.ID_CACHE_LANGUAGE, // 'Language' + hiddenName : 'lang', + store : new Ext.data.Store( { + proxy : new Ext.data.HttpProxy( { + url : 'loginSettingsAjax', + method : 'POST' + }), + baseParams : {request : 'getLangList'}, + reader : new Ext.data.JsonReader( { + root : 'rows', + fields : [ {name : 'LAN_ID'}, {name : 'LAN_NAME'} ] + }) + }), + valueField : 'LAN_ID', + displayField : 'LAN_NAME', + emptyText : 'Select', + selectOnFocus : true, + editable : false, + allowBlank : false, + listeners:{ + select: function(){ChangeSettings('1');} + } + }); + + cmbLanguages.store.on('load',function(){ cmbLanguages.setValue ( currentLang ) }); + cmbLanguages.store.load(); + saveButton = new Ext.Action({ + text : _('ID_SAVE_SETTINGS'), + disabled : true, + handler : saveSettings + }); + + loginFields = new Ext.form.FieldSet({ + title: _('ID_LOGIN_SETTINGS'), + items : [ + cmbLanguages, + { + xtype: 'checkbox', + checked: currentOption, + name: 'acceptRP', + fieldLabel: _('ID_ENABLE_FOTGOT_PASSWORD'), + id: 'ch_ii', + listeners:{ + check:function(){ChangeSettings('2');} + } + + }, + ], + buttons : [saveButton] + }); + + + var frm = new Ext.FormPanel( { + title: ' ', + id:'frm', + labelWidth: 150, + width:400, + labelAlign:'right', + autoScroll: true, + bodyStyle:'padding:2px', + waitMsgTarget : true, + frame: true, + + defaults: { + allowBlank: false, + msgTarget: 'side', + align:'center' + }, + items:[ loginFields ] + + }); + //render to process-panel + frm.render(document.body); +}); + +function saveSettings() { + Ext.getCmp('frm').getForm().submit( { + url : 'loginSettingsAjax?request=saveSettings', + waitMsg : _('ID_SAVING_PROCESS'), + timeout : 36000, + success : function(obj, resp) { + //nothing to do + response = Ext.decode(resp.response.responseText); + if (response.enable) + parent.PMExt.notify(_('ID_LOGIN_SETTINGS'),_('ID_ENABLE_FORGOT_PASSWORD')); + else + parent.PMExt.notify(_('ID_LOGIN_SETTINGS'),_('ID_DISABLE_FORGOT_PASSWORD')); + saveButton.disable(); + }, + failure: function(obj, resp) { + Ext.Msg.alert( _('ID_ERROR'), resp.result.msg); + } + }); +} + +ChangeSettings = function(iType){ + saveButton.enable(); +} diff --git a/workflow/engine/xmlform/login/forgotPassword.xml b/workflow/engine/xmlform/login/forgotPassword.xml new file mode 100644 index 000000000..aced56950 --- /dev/null +++ b/workflow/engine/xmlform/login/forgotPassword.xml @@ -0,0 +1,124 @@ + + + + <en>I forgot my password</en> + + + User + + + Email + + + + + Send Request + + + + +