oc-server3/htdocs/newpw.php
2012-08-16 21:04:13 +02:00

115 lines
2.6 KiB
PHP

<?php
/***************************************************************************
* For license information see doc/license.txt
*
* Unicode Reminder メモ
*
* Display some status information about the server and Opencaching
***************************************************************************/
require('./lib2/web.inc.php');
require_once('./lib2/logic/user.class.php');
$tpl->name = 'newpw';
$login->verify();
if ($login->userid != 0)
{
$tpl->menuitem = MNU_MYPROFILE_DATA_PASSWORD;
$user = new user($login->userid);
$tpl->assign('emailrq', $user->getEMail());
$target = 'myprofile.php';
}
else
{
$tpl->menuitem = MNU_LOGIN_NEWPW;
$target = 'login.php';
}
if (isset($_REQUEST['cancel']))
$tpl->redirect($target);
if (isset($_REQUEST['rqcode']))
{
$email = isset($_REQUEST['email']) ? $_REQUEST['email'] : '';
$user = user::fromEMail($email);
if ($user !== null)
{
if ($user->requestNewPWCode())
{
$tpl->assign('emailRequested', true);
$tpl->assign('emailch', $email);
}
else
$tpl->assign('emailErrorUnknown', true);
}
else
{
$tpl->assign('emailErrorNotFound', true);
}
$tpl->assign('emailrq', $email);
}
else if (isset($_REQUEST['changepw']))
{
$email = isset($_REQUEST['email']) ? $_REQUEST['email'] : '';
$code = isset($_REQUEST['code']) ? mb_trim($_REQUEST['code']) : '';
$password1 = isset($_REQUEST['password1']) ? mb_trim($_REQUEST['password1']) : '';
$password2 = isset($_REQUEST['password2']) ? mb_trim($_REQUEST['password2']) : '';
$bError = false;
$user = user::fromEMail($email);
if ($user === null)
{
$tpl->assign('emailRqErrorNotFound', true);
$bError = true;
}
else
{
if ($user !== null && ($user->getNewPWDate() < time() - 3*24*60*60))
{
$tpl->assign('codeErrorDate', true);
$bError = true;
}
else if ($user !== null && mb_strtoupper($user->getNewPWCode()) != mb_strtoupper($code))
{
$tpl->assign('codeError', true);
$bError = true;
}
if ($password1 != $password2)
{
$tpl->assign('passwordNotMatch', true);
$bError = true;
}
else if ($user !== null && !$user->setPassword($password1))
{
$tpl->assign('passwordError', true);
$bError = true;
}
if ($user->getIsActive() == false)
{
$tpl->assign('notActiveError', true);
$bError = true;
}
if ($bError == false)
{
$user->clearNewPWCode();
if (!$user->save())
$tpl->assign('errorUnknown', true);
else
$tpl->assign('passwordChanged', true);
$code = '';
}
}
$tpl->assign('emailrq', $email);
$tpl->assign('emailch', $email);
$tpl->assign('code', $code);
}
$tpl->display();
?>