PageRenderTime 48ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 1ms

/workflow/engine/methods/login/retrivePassword.php

https://bitbucket.org/ferOnti/processmaker
PHP | 118 lines | 101 code | 13 blank | 4 comment | 13 complexity | ecee5215f3174c4448404ba92ce6a2e3 MD5 | raw file
  1. <?php
  2. $data = $_POST['form'];
  3. global $RBAC;
  4. require_once PATH_RBAC."model/RbacUsers.php";
  5. G::LoadClass('pmFunctions');
  6. require_once 'classes/model/Users.php';
  7. G::LoadClass("system");
  8. $rbacUser = new RbacUsers();
  9. $user = new Users();
  10. $userData = $rbacUser->getByUsername($data['USR_USERNAME']);
  11. if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL']) {
  12. $aSetup = getEmailConfiguration();
  13. if (count($aSetup) == 0 || !isset($aSetup['MESS_ENGINE'])) {
  14. G::SendTemporalMessage ('ID_EMAIL_ENGINE_IS_NOT_ENABLED', "warning");
  15. G::header('location: forgotPassword');
  16. die;
  17. }
  18. $newPass = G::generate_password();
  19. $aData['USR_UID'] = $userData['USR_UID'];
  20. $aData['USR_PASSWORD'] = md5($newPass);
  21. /* **Save after sending the mail
  22. $rbacUser->update($aData);
  23. $user->update($aData);
  24. */
  25. $sFrom = ($aSetup['MESS_ACCOUNT'] != '' ? $aSetup['MESS_ACCOUNT'] . ' ' : '') . '<' . $aSetup['MESS_ACCOUNT'] . '>';
  26. $sSubject = G::LoadTranslation('ID_RESET_PASSWORD').' - ProcessMaker' ;
  27. $msg = '<h3>ProcessMaker Forgot password Service</h3>';
  28. $msg .='<p>'.G::LoadTranslation('ID_YOUR_USERMANE_IS').' : <strong>'.$userData['USR_USERNAME'].'</strong></p>';
  29. $msg .='<p>'.G::LoadTranslation('ID_YOUR_PASSWORD_IS').' : <strong>'.$newPass.'</strong></p>';
  30. switch ($aSetup['MESS_ENGINE']) {
  31. case 'MAIL':
  32. $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_1');
  33. break;
  34. case 'PHPMAILER':
  35. $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_2');
  36. break;
  37. case 'OPENMAIL':
  38. $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_3');
  39. break;
  40. }
  41. $sBody = "
  42. <table style=\"background-color: white; font-family: Arial,Helvetica,sans-serif; color: black; font-size: 11px; text-align: left;\" cellpadding='10' cellspacing='0' width='100%'>
  43. <tbody><tr><td><img id='logo' src='http://".$_SERVER['SERVER_NAME']."/images/processmaker.logo.jpg' /></td></tr>
  44. <tr><td style='font-size: 14px;'>$msg</td></tr>
  45. <tr><td style='vertical-align:middel;'>
  46. <br /><hr><b>This Business Process is powered by ProcessMaker ver. ".System::getVersion().".<b><br />
  47. <a href='http://www.processmaker.com' style='color:#c40000;'>www.processmaker.com</a><br /></td>
  48. </tr></tbody></table>";
  49. G::LoadClass('spool');
  50. $oSpool = new spoolRun();
  51. $oSpool->setConfig( array(
  52. 'MESS_ENGINE' => $aSetup['MESS_ENGINE'],
  53. 'MESS_SERVER' => $aSetup['MESS_SERVER'],
  54. 'MESS_PORT' => $aSetup['MESS_PORT'],
  55. 'MESS_ACCOUNT' => $aSetup['MESS_ACCOUNT'],
  56. 'MESS_PASSWORD' => $aSetup['MESS_PASSWORD'],
  57. 'SMTPAuth' => $aSetup['MESS_RAUTH'],
  58. 'SMTPSecure' => $aSetup['SMTPSecure']
  59. ));
  60. $passwd = $oSpool->config['MESS_PASSWORD'];
  61. $passwdDec = G::decrypt($passwd,'EMAILENCRYPT');
  62. $auxPass = explode('hash:', $passwdDec);
  63. if (count($auxPass) > 1) {
  64. if (count($auxPass) == 2) {
  65. $passwd = $auxPass[1];
  66. } else {
  67. array_shift($auxPass);
  68. $passwd = implode('', $auxPass);
  69. }
  70. }
  71. $oSpool->config['MESS_PASSWORD'] = $passwd;
  72. $oSpool->create(array(
  73. 'msg_uid' => '',
  74. 'app_uid' => '',
  75. 'del_index' => 0,
  76. 'app_msg_type' => 'TEST',
  77. 'app_msg_subject' => $sSubject,
  78. 'app_msg_from' => $sFrom,
  79. 'app_msg_to' => $data['USR_EMAIL'],
  80. 'app_msg_body' => $sBody,
  81. 'app_msg_cc' => '',
  82. 'app_msg_bcc' => '',
  83. 'app_msg_attach' => '',
  84. 'app_msg_template' => '',
  85. 'app_msg_status' => 'pending',
  86. 'app_msg_attach'=>''
  87. ));
  88. try {
  89. $oSpool->sendMail();
  90. $rbacUser->update($aData);
  91. $user->update($aData);
  92. G::header ("location: login.html");
  93. G::SendTemporalMessage ('ID_NEW_PASSWORD_SENT', "info");
  94. } catch (phpmailerException $e) {
  95. G::header ("location: login.html");
  96. G::SendTemporalMessage (G::LoadTranslation('MISSING_OR_NOT_CONFIGURED_SMTP'), "warning", 'string');
  97. } catch (Exception $e) {
  98. G::header ("location: login.html");
  99. G::SendTemporalMessage ($e->getMessage(), "warning", 'string');
  100. }
  101. } else {
  102. $msg = G::LoadTranslation('ID_USER') . ' ' . $data['USR_USERNAME'] . ' '. G::LoadTranslation('ID_IS_NOT_REGISTERED');
  103. G::SendTemporalMessage ($msg, "warning", 'string');
  104. G::header('location: forgotPassword');
  105. }