<?php
include_once 'sys/inc/start.php';
$doc = new document();
$doc->title = 'Авторизация';

if ($user->group){header('Location: /?'.SID);exit;}

$need_of_captcha=$cache->get('aut_failture_of_ip_'.$dcms->ip_long);


if ($need_of_captcha && (!isset($_SESSION['captcha']) || !isset($_POST['chislo']) || $_SESSION['captcha']!==$_POST['chislo']))
{
$doc->err('Проверочное число введено неверно');
}
elseif (isset($_POST['login']) && isset($_POST['password']))
{
if (!$_POST['login'])$doc->err('Введите логин');
elseif (!$_POST['password'])$doc->err('Введите пароль');
else
{
$login=(string)$_POST['login'];
$password=(string)$_POST['password'];

$q=mysql_query("SELECT `id`, `password` FROM `users` WHERE `login` = '".my_esc($login)."' LIMIT 1");

if (!mysql_num_rows($q))$doc->err('Логин "'.$login.'" не зарегистрирован');

elseif (crypt::hash($password) !== mysql_result($q, 0, 'password'))
{
$need_of_captcha = true;
$cache->set('aut_failture_of_ip_'.$dcms->ip_long, true, 600); // при ошибке заставляем пользователя проходить капчу
$id_user=mysql_result($q, 0, 'id');
mysql_query("INSERT INTO `log_of_user_aut` (`id_user`,`method`,`iplong`, `time`, `id_browser`, `status`) VALUES ('$id_user','post','$dcms->ip_long','".TIME."','$dcms->browser_id','0')");
$doc->err('Вы ошиблись при вводе пароля');
}
else
{
$id_user=mysql_result($q, 0, 'id');
$user_t = new user($id_user);
if (!$user_t->group)$doc->err('Ошибка при получении профиля пользователя');
elseif($user_t->a_code)
{
$doc->err('Аккаунт не активирован');
}
else {
$user = $user_t;
$cache->set('aut_failture_of_ip_'.$dcms->ip_long, false, 1); 
mysql_query("INSERT INTO `log_of_user_aut` (`id_user`,`method`,`iplong`, `time`, `id_browser`, `status`) VALUES ('$id_user','post','$dcms->ip_long','".TIME."','$dcms->browser_id','1')");
 // если пользователь авторизовался, то ключ для восстановления ему больше не нужен
if ($user -> recovery_password)$user -> recovery_password = '';
$_SESSION[SESSION_ID_USER] = $user -> id;

if (isset($_POST['save_to_cookie']) && $_POST['save_to_cookie'])
{
setcookie(COOKIE_ID_USER, $user->id, TIME+60*60*24*365);
setcookie(COOKIE_USER_PASSWORD, crypt::cookie_encrypt($password), TIME+60*60*24*365);
}

}



}
}
}
elseif(!empty($_COOKIE[COOKIE_ID_USER]) && !empty($_COOKIE[COOKIE_USER_PASSWORD]))
{

$tmp_user = new user($_COOKIE[COOKIE_ID_USER]);

if (crypt::hash(crypt::cookie_decrypt($_COOKIE[COOKIE_USER_PASSWORD]))===$tmp_user->password)
{
 // если пользователь авторизовался, то ключ для восстановления ему больше не нужен
if ($user -> recovery_password)$user -> recovery_password = '';
mysql_query("INSERT INTO `log_of_user_aut` (`id_user`, `method`, `iplong`, `time`, `id_browser`, `status`) VALUES ('$tmp_user->id','cookie','$dcms->ip_long','".TIME."','$dcms->browser_id','1')");
$user = $tmp_user;
$_SESSION[SESSION_ID_USER] = $user -> id;
}
else
{

$need_of_captcha = true;
$cache->set('aut_failture_of_ip_'.$dcms->ip_long,true,600); // при ошибке заставляем пользователя проходить капчу
mysql_query("INSERT INTO `log_of_user_aut` (`id_user`, `method`, `iplong`, `time`, `id_browser`, `status`) VALUES ('$tmp_user->id','cookie','$dcms->ip_long','".TIME."','$dcms->browser_id','0')");
setcookie(COOKIE_ID_USER);
setcookie(COOKIE_USER_PASSWORD);
}
}


if ($user->group)
{
// удаляем информацию как о госте
mysql_query("DELETE FROM `guest_online` WHERE `ip_long` = '$dcms->ip_long' AND `browser` = '".my_esc($dcms->browser)."'");

if (isset($_GET['return']))header('Location: '.$_GET['return']);else header('Location: /?'.SID);
exit;
}


$form = new design();

if (isset($_GET['return']))$doc->ret('Вернуться',for_value($_GET['return']));


$form->assign('method','post');
$form->assign('action','?'.passgen().(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();
$elements[]=array('type'=>'input_text', 'title' => 'Логин', 'br'=>1, 'info'=>array('name' => 'login'));
$elements[]=array('type'=>'password', 'title' => 'Пароль (<a href="/pass.php">забыли</a>)', 'br'=>1, 'info'=>array('name' => 'password'));
$elements[]=array('type'=>'checkbox', 'br'=>1, 'info'=>array('value'=>1, 'name'=>'save_to_cookie', 'text'=>'Запомнить меня'));
if ($need_of_captcha)$elements[]=array('type'=>'captcha', 'br'=>1);
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('value'=>'Авторизация')); // кнопка
$form->assign('el',$elements);
$form->display('input.form.tpl');

?>
