View file visavi-rotorcms-63832fa/app/controllers/users/login.php

File size: 2.39Kb
<?php
$act = App::router('name') ?: 'login';

switch ($act):
############################################################################################
##                                    Главная страница                                    ##
############################################################################################
case 'login':

	if (!User::check()) {
		if (isset($_POST['login']) && isset($_POST['password'])) {

			$login = isset($_POST['login']) ? check($_POST['login']) : '';
			$password = isset($_POST['password']) ? trim($_POST['password']) : '';
			$haunter = isset($_POST['haunter']) ? 1 : 0;

			if (!empty($login) && !empty($password)) {

				$field = strpos($login, '@') ? 'email' : 'login';

				$user = User::first(array('conditions' => array("$field=?", $login)));
				if ($user && password_verify($password, $user->password)) {

					if (empty($haunter)) {
						setcookie('id', $user->id, time() + 3600 * 24 * 365, '/', $_SERVER['HTTP_HOST'], null, true);
						setcookie('pass', md5($user->password.env('APP_KEY')), time() + 3600 * 24 * 365, '/', $_SERVER['HTTP_HOST'], null, true);
					}

					$_SESSION['ip'] = Registry::get('ip');
					$_SESSION['id'] = $user->id;
					$_SESSION['pass'] = md5(env('APP_KEY').$user->password);

					if (!empty($_SESSION['social'])) {
						$social = new Social;
						$social->user_id = $user->id;
						$social->network = $_SESSION['social']['network'];
						$social->uid = $_SESSION['social']['uid'];
						$social->save();
					}

					notice('Вы успешно авторизованы!');
					redirect('/');
				}
			}

			notice('Ошибка авторизации. Неправильный логин или пароль!');
			redirect('/login');
		}

		if (isset($_POST['token'])) {
			User::socialLogin($_POST['token']);
		}

		App::view('users/login');
	} else {
		redirect('/');
	}
break;

############################################################################################
##                                       Выход                                            ##
############################################################################################
case 'logout':
	$_SESSION = array();
	setcookie('pass', '', time() - 3600, '/', $_SERVER['HTTP_HOST'], null, true);
	setcookie(session_name(), '', time() - 3600, '/', '');
	session_destroy();

	redirect('/');
break;

default:
	redirect('/login');
endswitch;