<?
$sessionIP 			= GET_IP();
$sessionUserDate 	= date("d.m.y");

$doc = new DOMDocument;
$doc->load(ROOT . '/crmdata/database/users-ipblock.xml');
$xpath = new DOMXPath($doc);
$sessions = $xpath->query('/sessions/session[@ip="'.$sessionIP.'"]');
foreach ($sessions as $session) {
	$sessionDate 	= $session->getAttribute('date');
}
$sessionIPCheck = $xpath->query('/sessions/session[@ip="'.$sessionIP.'"]');

if($sessionIPCheck->length > 0 and strtotime($sessionUserDate) > strtotime($sessionDate)){
	$dom = new DOMDocument; 
	$dom->load(ROOT . '/crmdata/database/users-ipblock.xml');
	$xpath = new DOMXPath($dom); 
	
	$ip = $_SERVER['REMOTE_ADDR'];

	$sessions = $xpath->query('/sessions/session[@ip="'.$ip.'"]');
	$el = $sessions->item(0);
	$el->parentNode->removeChild($el);
	$dom->save(ROOT . '/crmdata/database/users-ipblock.xml'); 
}

class AuthClass {

    public function isAuth() {
        if (isset($_SESSION["is_auth"])) { //Если сессия существует
            return $_SESSION["is_auth"]; //Возвращаем значение переменной сессии is_auth (хранит true если авторизован, false если не авторизован)
        }
        else return false; //Пользователь не авторизован, т.к. переменная is_auth не создана
    }
    
    public function auth($user) {
		global $folder, $sessionIPCheck;
		$formLogin 			= $_POST["login"];
		$formPassword 		= md5(md5($_POST["password"]).md5($folder));
		
		$dom = new DOMDocument;
		$dom->load(ROOT . '/crmdata/database/users.xml');
		$xpath = new DOMXPath($dom);
		$user = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]');

        if ($user->length > 0 and $sessionIPCheck->length < 1) {
			//echo 'пользователь найден /' . $formLogin . '/' . $formPassword . '/' . $_POST["password"] . '/' . $folder . '/' . $_SERVER["SERVER_NAME"];

			//Если логин и пароль введены правильно
			$userId = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]')->item(0)->getAttribute('id');
			$userLogin = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]')->item(0)->getAttribute('login');
			$userGroup = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]')->item(0)->getAttribute('group');
			$userName = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]')->item(0)->getElementsByTagName("username")->item(0)->nodeValue;
			$userSurName = $xpath->query('/users/user[@login="'.$formLogin.'" and @password="'.$formPassword.'"]')->item(0)->getElementsByTagName("usersurname")->item(0)->nodeValue;
			$_SESSION["is_auth"] 		= true; 		//Делаем пользователя авторизованным
			$_SESSION["login"] 			= $userLogin; 	//Записываем в сессию логин пользователя
			$_SESSION["group"] 			= $userGroup; 	//Записываем в сессию группу пользователя
			$_SESSION["username"] 		= $userName; 	//Записываем в сессию имя пользователя
			$_SESSION["usersurname"] 	= $userSurName; //Записываем в сессию имя пользователя
			$_SESSION["folder"] 		= $folder; 		//Записываем в сессию имя пользователя
			$_SESSION["userid"] 		= $userId; 		//Записываем в сессию имя пользователя
			
			// Добавление лога
			new_log("Авторизация в системе");
			return true;
        } else { //Логин и пароль не подошел
			//echo 'пользователь НЕ найден /' . $formLogin . '/' . $formPassword . '/' . $_POST["password"] . '/' . $folder . '/' . $_SERVER["SERVER_NAME"];
            $_SESSION["is_auth"] = false;
			
			// Добавление лога
			new_log("Неудачная авторизация");
            return false; 
        }
    }
    
    public function getLogin() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["login"]; //Возвращаем логин, который записан в сессию
        }
    }
    public function getGroup() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["group"]; //Возвращаем логин, который записан в сессию
        }
    }
    public function getUserName() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["username"]; //Возвращаем имя
        }
    }
    public function getUserSurName() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["usersurname"]; //Возвращаем фамилию
        }
    }
    public function getUserId() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["userid"]; //Возвращаем id пользователя
        }
    }
    public function out() {
        $_SESSION = array(); //Очищаем сессию
        session_destroy(); //Уничтожаем
    }
}

$auth = new AuthClass();

if (isset($_POST["btn_login"]) && isset($_POST["login"]) && isset($_POST["password"])) { //Если логин и пароль были отправлены
	if (!$auth->auth($_POST["login"], $_POST["password"])) { //Если логин и пароль введен не правильно
		$notices_er[] = 'Логин или пароль не верный';
	}
	if(isset($sessionDate) AND strtotime($sessionUserDate) < strtotime($sessionDate)) {
		$notices_er[] = 'Ваш заблокированы до ' . $sessionDate;
	}
}
		
if (isset($_GET["is_exit"])) { //Если нажата кнопка выхода
    if ($_GET["is_exit"] == 1) {
		// Добавление лога
		new_log("Выход из системы");
        $auth->out(); //Выходим
        header("Location: /$folder/"); //Редирект после выхода
    }
}

$LoginCheck = $auth->getLogin();
$GroupCheck = $auth->getGroup();