Fixing custom lost password to work as classic Chamilo see BT#8680

1.9.x
Julio Montoya 11 years ago
parent 0c35e8175a
commit 7333997ce3
  1. 4
      custompages/lostpassword.php
  2. 57
      main/auth/lostPassword.php
  3. 3
      main/inc/lib/login.lib.php

@ -52,10 +52,8 @@ require_once('language.php');
}?> }?>
<form id="lostpassword-form" class="form" action="lostPassword.php" method="post"> <form id="lostpassword-form" class="form" action="lostPassword.php" method="post">
<div> <div>
<label for="user">*<?php echo custompages_get_lang('UserName');?></label> <label for="user">*<?php echo custompages_get_lang('LoginOrEmailAddress');?></label>
<input name="user" type="text" /><br /> <input name="user" type="text" /><br />
<label for="email">*<?php echo custompages_get_lang('Email');?></label>
<input name="email" type="text" /><br />
</div> </div>
</form> </form>
<div id="lostpassword-form-submit" class="form-submit" onclick="document.forms['lostpassword-form'].submit();"> <div id="lostpassword-form-submit" class="form-submit" onclick="document.forms['lostpassword-form'].submit();">

@ -29,56 +29,37 @@ require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
global $_configuration; global $_configuration;
if (CustomPages::enabled()) { if (CustomPages::enabled()) {
//Reset Password when user goes to the link // Reset Password when user goes to the link
if ($_GET['reset'] && $_GET['id']) { if (isset($_GET['reset']) && $_GET['reset'] &&
isset($_GET['id']) && $_GET['id']
) {
$mesg = Login::reset_password($_GET["reset"], $_GET["id"], true); $mesg = Login::reset_password($_GET["reset"], $_GET["id"], true);
CustomPages::display(CustomPages::INDEX_UNLOGGED, array('info' => $mesg)); CustomPages::display(CustomPages::INDEX_UNLOGGED, array('info' => $mesg));
} }
//Check email/username and do the right thing // Check email/username and do the right thing
if (isset($_POST['user']) && isset ($_POST['email'])) { if (isset($_POST['user'])) {
$user = $_POST['user']; $usersRelatedToUsername = Login::get_user_accounts_by_username($_POST['user']);
$email = $_POST['email'];
$condition = ''; if ($usersRelatedToUsername) {
if (!empty($email)) {
$condition = " AND LOWER(email) = '".Database::escape_string($email)."' ";
}
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$query = " SELECT user_id AS uid, lastname AS lastName, firstname AS firstName,
username AS loginName, password, email, status AS status,
official_code, phone, picture_uri, creator_id
FROM ".$tbl_user."
WHERE ( username = '".Database::escape_string($user)."' $condition ) ";
$result = Database::query($query);
$num_rows = Database::num_rows($result);
if ($result && $num_rows > 0) {
if ($num_rows > 1) {
// more than one user
$by_username = false;
while ($data = Database::fetch_array($result)) {
$user[] = $data;
}
} else {
// single user (valid user + email)
$by_username = true; $by_username = true;
$user = Database::fetch_array($result); foreach ($usersRelatedToUsername as $user) {
}
if ($_configuration['password_encryption'] != 'none') { if ($_configuration['password_encryption'] != 'none') {
// Send email with secret link to user
Login::handle_encrypted_password($user, $by_username); Login::handle_encrypted_password($user, $by_username);
} else { } else {
Login::send_password_to_user($user, $by_username); Login::send_password_to_user($user, $by_username);
} }
}
} else { } else {
CustomPages::display(CustomPages::LOST_PASSWORD, array('error' => get_lang('NoUserAccountWithThisEmailAddress'))); CustomPages::display(
CustomPages::LOST_PASSWORD,
array('error' => get_lang('NoUserAccountWithThisEmailAddress'))
);
} }
} else { } else {
CustomPages::display(CustomPages::LOST_PASSWORD); CustomPages::display(CustomPages::LOST_PASSWORD);
} }
CustomPages::display( CustomPages::display(
CustomPages::INDEX_UNLOGGED, CustomPages::INDEX_UNLOGGED,
array('info' => get_lang('YourPasswordHasBeenEmailed')) array('info' => get_lang('YourPasswordHasBeenEmailed'))
@ -104,16 +85,16 @@ if (isset($_GET['reset']) && isset($_GET['id'])) {
$form = new FormValidator('lost_password'); $form = new FormValidator('lost_password');
$form->addElement('header', $tool_name); $form->addElement('header', $tool_name);
$form->addElement('text', 'user', array(get_lang('LoginOrEmailAddress'), get_lang('EnterEmailUserAndWellSendYouPassword')), array('size'=>'40')); $form->addElement('text', 'user', array(get_lang('LoginOrEmailAddress'), get_lang('EnterEmailUserAndWellSendYouPassword')), array('size'=>'40'));
$form->addElement('style_submit_button', 'submit', get_lang('Send'),'class="btn"'); $form->addElement('style_submit_button', 'submit', get_lang('Send'),'class="btn"');
// setting the rules // Setting the rules
$form->addRule('user', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('user', get_lang('ThisFieldIsRequired'), 'required');
if ($form->validate()) { if ($form->validate()) {
$values = $form->exportValues(); $values = $form->exportValues();
$users_related_to_username = Login::get_user_accounts_by_username(
$users_related_to_username = Login::get_user_accounts_by_username($values['user']); $values['user']
);
if ($users_related_to_username) { if ($users_related_to_username) {
$by_username = true; $by_username = true;

@ -791,7 +791,8 @@ class Login
* @param string $username (email or username) * @param string $username (email or username)
* @return boolean * @return boolean
*/ */
function get_user_accounts_by_username($username) { public static function get_user_accounts_by_username($username)
{
if (strpos($username,'@')){ if (strpos($username,'@')){
$username = api_strtolower($username); $username = api_strtolower($username);
$email = true; $email = true;

Loading…
Cancel
Save