﻿////////////////////////////////////////////////////////////////////////////////
// JohnCMS                             Content Management System              //
// Официальный сайт сайт проекта:      http://johncms.com                     //
// Дополнительный сайт поддержки:      http://gazenwagen.com                  //
////////////////////////////////////////////////////////////////////////////////
// JohnCMS core team:                                                         //
// Евгений Рябинин aka john77          john77@gazenwagen.com                  //
// Олег Касьянов aka AlkatraZ          alkatraz@gazenwagen.com                //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////
// Модуль входа по ключу для JohnCMS 3.2.2         //
// Автор мода: Fikus79                             //
// Сайт автора: http://mowap.ru                    //
/////////////////////////////////////////////////////

Модуль входа по ключу.
Что такое КЛЮЧ и зачем он нужен?

Если злоумышленник воспользуется Вашим телефоном, или компьютером, или еще каким образом сможет похитить закладку с Вашим автологином по логину и паролю, то он сможет сделать с Вашей учетной записью все что угодно, сможет писать от Вашего имени, сменить пароль и прочее.
Если же он похитит Вашу ссылку с автологином по ключу, то он не сможет сменить Ваш пароль(для смены пароля необходимо знать старый пароль от учетки)
Следовательно Вы сможете зайти на сайт по логину и паролю, и сменить ключ.
И злоумышленник останется с носом.
Ключ генерируется случайным образом и может состоять из от семи до двенадцати символов, цифр, знаков. Но лучше конечно, чтобы никакие злоумышленники вообще не хитили у Вас ничего :)


ВНИМАНИЕ!!!
Для нормальной работы системы, необходимы следующие условия:
1) Версия PHP не ниже 5.1
2) MySQL версии не ниже 4.1
3) Поддержка .htaccess
3) Версия Джона на сайте - JohnCMS 3.2.2


УСТАНОВКА МОДУЛЯ
1) Распаковываем архив
2) Заливаем все распакованные файлы на хостинг, согласившись на замену
3) Авторизуемся на сайте как администратор
4) Запускаем инсталлятор по адресу http://ваш_сайт/install.php
5) Следуйте подсказкам инсталлятора

Если процедура установки прошла успешно и сайт работает,
НЕ ЗАБУДЬТЕ следующее:
   - удалите файл /install.php
   
   Модуль затронул три системных файла. Все свои изменения я выделял в файле и их легко найти.
Для тех, кто многое менял в двиге и ему не допустима замена его файлов:

1) в файл index.php добавить код в кабинет (смотрите в моем файле):
		//////////////////// добавил ссылку на КЛЮЧ ////////////////////
		echo '<li><font color="red"><b>!</b></font> <a href="'.$home.'/str/key.php">Секретный ключ</a> <a href="'.$home.'/read.php?do=key">?</a></li>';
		////////////////////////////////////////////////////////////////
2) в файле registration.php заменен код при занесении данных нового пользователя в базу
//////////////// Генерация ключа для ВХОДА ПО КЛЮЧУ /////////////////////////
		$gen_pass = '';
		$bukvy = array('a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'L', 'm', 'M', 'n', 'N', 'o', 'p', 'P', 'q', 'Q','r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', '!', '@', '?', '~', '(', ')');
		shuffle($bukvy);
		$z = rand(8,12);
		while ($z > 0)
		{
			$gen_pass .= $bukvy[$z];
			$z = $z - 1;
		}
	/////////////////////////////////////////////////////////////////////////////
	///////Занесение в базу данных нового пользователя://////////////////
    if (empty($error)) {
        $preg = $set['mod_reg'] > 1 ? 1 : 0;
        mysql_query("INSERT INTO `users` SET
        `name` = '" . mysql_real_escape_string($reg_nick) . "',
        `name_lat` = '" . mysql_real_escape_string($lat_nick) . "',
        `password` = '" . mysql_real_escape_string($pass) . "',
        `imname` = '$reg_name',
        `about` = '$reg_about',
        `sex` = '$reg_sex',
        `rights` = '0',
        `ip` = '$ipl',
        `browser` = '" . mysql_real_escape_string($agn) . "',
        `datereg` = '$realtime',
        `lastdate` = '$realtime',
        `preg` = '$preg',
        `inkey`='" . $gen_pass . "'");
        $usid = mysql_insert_id();
        echo "Вы зарегистрированы!<br/>";
        echo "Ваш id: " . $usid . "<br/>";
        echo "Ваш логин: " . $reg_nick . "<br/>";
        echo "Ваш Пароль: " . $reg_pass . "<br/>";
		
		////////////===============///////////////////////
		echo "Ваш Ключ: " . $gen_pass . "<br/>";
        echo "Ссылка для автовхода:<br/><input type='text' value='" . $home . "/key.php?key=" . $gen_pass . "' /><br/>"; ///////////// ссылка для автовхода по ключу
		////////////===============////////////////////////
		
 3) в файл read.php добавить код справки о данном модуле:  
   
	/////////// Для модуля ВХОД ПО КЛЮЧУ //////////	
	case 'key' :
        include_once ('pages/key.txt');
        break;
	///////////////////////////////////////////////
 
	/////////// Для модуля ВХОД ПО КЛЮЧУ //////////
	echo '<div class="menu"><a href="read.php?do=key">Вход по ключу</a></div>';
	///////////////////////////////////////
   
   
   
   
   
   
   
   
   
   
   
   