You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

108 lines
4.6 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
require_once('tiki-setup.php');
$access->check_feature('forgotPass');
$smarty->assign('showmsg', 'n');
$smarty->assign('showfrm', 'y');
$isvalid = false;
if (isset($_REQUEST["user"])) {
// this is a 'new password activation':
if (isset($_REQUEST["actpass"])) {
$oldPass = $userlib->activate_password($_REQUEST["user"], $_REQUEST["actpass"]);
if ($oldPass) {
header("location: tiki-change_password.php?user=" . urlencode($_REQUEST["user"]) . "&oldpass=" . $oldPass);
die;
}
$smarty->assign('msg', tra("Invalid username or activation code. Maybe this code has already been used."));
$smarty->display("error.tpl");
die;
}
}
if (isset($_REQUEST["remind"])) {
if (! empty($_REQUEST['name'])) {
if (! $userlib->user_exists($_REQUEST['name'])) {
$showmsg = 'e';
$smarty->assign('msg', tra('Invalid or unknown username') . ': ' . $_REQUEST['name']);
} else {
$info = $userlib->get_user_info($_REQUEST["name"]);
if (empty($info['email'])) { //only renew if i can mail the pass
$showmsg = 'e';
$smarty->assign('msg', tra('Unable to send mail. User has not configured email'));
} elseif (! empty($info['valid']) && ($prefs['validateRegistration'] == 'y' || $prefs['validateUsers'] == 'y')) {
$showmsg = 'e';
$userlib->send_validation_email($_REQUEST["name"], $info['valid'], $info['email'], 'y');
} else {
$_REQUEST['email'] = $info['email'];
}
}
} elseif (! empty($_REQUEST['email'])) {
if (! ($_REQUEST['name'] = $userlib->get_user_by_email($_REQUEST['email']))) {
$showmsg = 'e';
$smarty->assign('msg', tra('Invalid or unknown email address') . ': ' . $_REQUEST['email']);
}
} else {
$showmsg = 'e';
$smarty->assign('msg', tra('Please provide a username or email address.'));
}
if (isset($showmsg) && $showmsg == 'e') {
$smarty->assign('showmsg', 'e');
} else {
include_once('lib/webmail/tikimaillib.php');
$name = $_REQUEST['name'];
$pass = $userlib->renew_user_password($name);
$languageEmail = $tikilib->get_user_preference($name, "language", $prefs['site_language']);
// Now check if the user should be notified by email
$foo = parse_url($_SERVER["REQUEST_URI"]);
$machine = $tikilib->httpPrefix(true) . dirname($foo["path"]);
$machine = preg_replace("!/$!", "", $machine); // just incase
$smarty->assign('mail_machine', $machine);
$smarty->assign('mail_site', $_SERVER["SERVER_NAME"]);
$smarty->assign('mail_user', $name);
$smarty->assign('mail_apass', md5($pass));
$smarty->assign('mail_ip', $tikilib->get_ip_address());
$mail_data = sprintf($smarty->fetchLang($languageEmail, 'mail/password_reminder_subject.tpl'), $_SERVER["SERVER_NAME"]);
$mail = new TikiMail($name);
$mail->setSubject($mail_data);
$mail->setText(stripslashes($smarty->fetchLang($languageEmail, 'mail/password_reminder.tpl')));
// grab remote IP through forwarded-for header when served by cache
$mail->setHeader('X-Password-Reset-From', $tikilib->get_ip_address());
if (! $mail->send([$_REQUEST['email']])) {
$smarty->assign('msg', tra("The mail can't be sent. Contact the administrator"));
$smarty->display("error.tpl");
die;
}
// Just show "success" message and no form
$smarty->assign('showmsg', 'y');
$smarty->assign('showfrm', 'n');
$tmp = tra("An email with a link to reset your password has been sent ");
if ($prefs['login_is_email'] == 'y') {
$tmp .= tra("to the email");
} else {
$tmp .= tra("to the registered email address for");
}
$tmp .= " " . $name . ". ";
$tmp .= tra('Please contact the Administrator if you do not get the email, or if there is an issue with resetting the password.');
$smarty->assign('msg', $tmp);
}
}
// disallow robots to index page:
$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
// Display the template
$smarty->assign('mid', 'tiki-remind_password.tpl');
$smarty->display("tiki.tpl");