addToLog("login(): \$_SESSION['coll']=\"".$_SESSION['coll']."\"", EXTRA_VERBOSE_MODE);
}
$f->connectDatabase();
$f->deleteExpiredKey();
}
// traitement de la demande de redefinition
if (isset($_POST['resetpwd_action_sendmail']) && !isset($_GET['key'])) {
$valid_post = true;
$login = addslashes($_POST['login']);
// validation du login
if ($login == "") {
$valid_post = false;
$f->addToMessage("error", _("Votre identifiant est incorrect, ou ne vous permet pas de redefinir votre mot de passe de cette maniere. Contactez votre administrateur."));
}
// traitement ...
if ($valid_post == true) {
$mode = $f->retrieveUserAuthenticationMode($login);
// cas : login non trouve en base
if ($mode == false) {
$f->addToMessage("error", _("Votre identifiant est incorrect, ou ne vous permet pas de redefinir votre mot de passe de cette maniere. Contactez votre administrateur."));
// cas : login correct et mode == "db"
} elseif (strtolower($mode) == "db") {
$sended = false;
$user_infos = $f->retrieveUserProfile($login);
if (isset($user_infos['email']) and !empty($user_infos['email'])) {
$hash = $f->genPasswordResetKey();
$key_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on" ? "https://":"http://").$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."?key=".$hash."&coll=".(isset($_POST['coll']) ? $_POST['coll'] : "");
// timeout 60 minutes
$timestamp = time() + 3600;
$timeout = date("YmdHis", $timestamp);
// compose mail
$mail_title = _("Confirmation de reinitialisation du mot de passe ".$f->config['application']);
$mail_recipient = $user_infos['email'];
$mail_content = _("Vous avez demande la reinitialisation de votre mot de passe ".$f->config['application']." pour l'identifiant")." : ".$login."
";
$mail_content .= _("Pour finaliser votre demande, veuillez cliquer sur ce lien")." : ";
$mail_content .= "
".$key_url."";
$mail_content .= "
Pour des raisons de securite, le lien ci-dessus expire dans un delai de 1 heure.";
$sended = $f->sendMail($mail_title, $mail_content, $mail_recipient);
}
if ($sended) {
$f->addPasswordResetKey($login, $hash, $timeout);
$f->addToMessage("valid", _("Un message de demande de reinitialisation de mot de passe vous a ete envoye sur votre messagerie."));
$next_action = null;
} else {
$f->addToMessage("error", "Erreur lors de l'envoi par email. Veuillez contacter votre administrateur.");
}
// cas : login correct et mode != "db"
} else {
$f->addToMessage("error", _("Votre identifiant est incorrect, ou ne vous permet pas de redefinir votre mot de passe de cette maniere. Contactez votre administrateur."));
}
}
} elseif (isset($_POST['resetpwd_action_newpwd']) && !isset($_GET['key'])) {
$user_login = addslashes($_POST['user_login']);
if (empty($_POST['pwd_one']) or empty($_POST['pwd_two'])) {
$f->addToMessage("error", "Veuillez remplir les deux champs mot de passe.");
$coll = $_POST['coll'];
$next_action = "display_password_form";
} elseif($_POST['pwd_one'] == $_POST['pwd_two']) {
$f->changeDatabaseUserPassword(addslashes($_POST['user_login']), $_POST['pwd_one']);
$f->deletePasswordResetKeys($user_login);
$f->addToMessage("valid", "Le nouveau mot de passe a bien ete enregistre. Vous pouvez desormais vous connecter avec ce mot de passe.");
$next_action = null;
} else {
$f->addToMessage("error", "Les deux mots de passe ne sont pas identiques.");
$coll = $_POST['coll'];
$next_action = "display_password_form";
}
} elseif(isset($_GET['key']) and isset($_GET['coll']) ) {
$_SESSION['coll'] = $_GET['coll'];
$f->connectDatabase();
$login = $f->passwordResetKeyExists(addslashes($_GET['key']));
if ($login != false) {
$coll = $_SESSION['coll'];
$user_login = $login;
$next_action = "display_password_form";
} else {
$next_action = "display_login_form";
}
}
$f->displayMessages();
if ($next_action == "display_login_form") {
$f->displayPasswordResetLoginForm();
} elseif($next_action == "display_password_form") {
$f->displayPasswordResetPasswordForm($coll, $user_login);
}
?>