Init
This commit is contained in:
106
view/LoginView.php
Normal file
106
view/LoginView.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?PHP
|
||||
|
||||
require_once('View.php');
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/modal-form/cp.php';
|
||||
|
||||
class LoginView extends View
|
||||
{
|
||||
function fetch()
|
||||
{
|
||||
// Выход
|
||||
if($this->request->get('action') == 'logout')
|
||||
{
|
||||
unset($_SESSION['user_id']);
|
||||
header('Location: '.$this->config->root_url);
|
||||
exit();
|
||||
}
|
||||
// Вспомнить пароль
|
||||
elseif($this->request->get('action') == 'password_remind')
|
||||
{
|
||||
// Если запостили email
|
||||
if($this->request->method('post') && $this->request->post('email'))
|
||||
{
|
||||
$email = $this->request->post('email');
|
||||
$this->design->assign('email', $email);
|
||||
|
||||
// Выбираем пользователя из базы
|
||||
$user = $this->users->get_user($email);
|
||||
if(!empty($user))
|
||||
{
|
||||
// Генерируем секретный код и сохраняем в сессии
|
||||
$code = md5(uniqid($this->config->salt, true));
|
||||
$_SESSION['password_remind_code'] = $code;
|
||||
$_SESSION['password_remind_user_id'] = $user->id;
|
||||
|
||||
// Отправляем письмо пользователю для восстановления пароля
|
||||
$this->notify->email_password_remind($user->id, $code);
|
||||
$this->design->assign('email_sent', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->design->assign('error', 'user_not_found');
|
||||
}
|
||||
}
|
||||
// Если к нам перешли по ссылке для восстановления пароля
|
||||
elseif($this->request->get('code'))
|
||||
{
|
||||
// Проверяем существование сессии
|
||||
if(!isset($_SESSION['password_remind_code']) || !isset($_SESSION['password_remind_user_id']))
|
||||
return false;
|
||||
|
||||
// Проверяем совпадение кода в сессии и в ссылке
|
||||
if($this->request->get('code') != $_SESSION['password_remind_code'])
|
||||
return false;
|
||||
|
||||
// Выбераем пользователя из базы
|
||||
$user = $this->users->get_user(intval($_SESSION['password_remind_user_id']));
|
||||
if(empty($user))
|
||||
return false;
|
||||
|
||||
// Залогиниваемся под пользователем и переходим в кабинет для изменения пароля
|
||||
$_SESSION['user_id'] = $user->id;
|
||||
header('Location: '.$this->config->root_url.'/user');
|
||||
}
|
||||
return $this->design->fetch('password_remind.tpl');
|
||||
}
|
||||
// Вход
|
||||
elseif($this->request->method('post') && $this->request->post('login'))
|
||||
{
|
||||
$cp = new ReCaptcha('6LegdywdAAAAAJaQLxIlHnITncRtuHQu-HHxeAYG');
|
||||
$cpResult = $cp->verifyResponse($_SERVER['REMOTE_ADDR'], $this->request->post('recaptcha_response'));
|
||||
if (!$cpResult->success) {
|
||||
$this->design->assign('error', 'recaptcha');
|
||||
} else {
|
||||
$email = $this->request->post('email');
|
||||
$password = $this->request->post('password');
|
||||
|
||||
$this->design->assign('email', $email);
|
||||
|
||||
if($user_id = $this->users->check_password($email, $password))
|
||||
{
|
||||
$user = $this->users->get_user($email);
|
||||
if($user->enabled)
|
||||
{
|
||||
$_SESSION['user_id'] = $user_id;
|
||||
$this->users->update_user($user_id, array('last_ip'=>$_SERVER['REMOTE_ADDR']));
|
||||
|
||||
// Перенаправляем пользователя на прошлую страницу, если она известна
|
||||
if(!empty($_SESSION['last_visited_page']))
|
||||
header('Location: '.$_SESSION['last_visited_page']);
|
||||
else
|
||||
header('Location: '.$this->config->root_url);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->design->assign('error', 'user_disabled');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->design->assign('error', 'login_incorrect');
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->design->fetch('login.tpl');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user