Перейти к содержимому


[модуль] Cохранение логина в куках


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 October 2014 - 07:36 PM

Модуль Автологин - Автологин на компе, с которого уже производился ввод логина/пароля.

Логин хранится в куках. Точнее, там хранится md5(login.password.random), т.е. получить логин-пароль в чистом виде из куки нельзя.
Новый random создается (и кука перезаписывается) при каждой перезагрузке страницы.
Это позволяет быть уверенным, что если на ЭТОМ компе залогинился, то "автологинная кука" на всех остальных компах стала недействительной.
Другими словами, при включенной фишке автологин будет работать только на ОДНОМ последнем по времени доступа компе.
Фишка отключаема. Если отключить, то автологин на любом компе сохраняется до принудительного выхода (logoff) либо истечения срока хранения куки.

Админка выглядит следующим образом:
Прикрепленный файл  1.JPG   58.61К   16 Количество загрузок:

Установка:
----------
1. копируем файлы

cookies.js -> data/[шаблон]/
autologin.php -> core/includes/processor
addon.php -> core/includes/admin
modules_cookielogin.php -> core/includes/admin/sub/
modules_cookielogin.tpl.html -> core/tpl/admin/

Файл addon.php нужен ОДИН РАЗ для создания в таблицах новых полей.
После первого же захода в админку его можно удалить, если он не удалился сам.

2. в файле default.tpl.html перед строкой


<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></div>


вставляем


{* BEGIN cookielogin *}
<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=cookielogin">Автологин</a></div>
{* END cookielogin *}



3. в файле core/tpl/admin/menu.tpl.html перед строкой


<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></td></tr></table>


вставляем


{* BEGIN cookielogin *}
<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=cookielogin">Автологин</a></td></tr></table>
{* END cookielogin *}



4. в файле core/includes/admin/modules.php перед строкой


array("id"=>"yandex", "name"=>"Яндекс.Маркет" )


вставляем


# BEGIN cookielogin
array("id"=>"cookielogin", "name"=>"Автологин"),
# END cookielogin



5. в файле index.php

5.1. строку


if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file" ))) {


заменяем на


# BEGIN cookieligin
#if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file" ))) {
if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file", "autologin"))) {
# END cookieligin


5.2. чуть ниже перед строкой


//init Smarty


вставляем


# BEGIN cookieligin
if (!isset($_SESSION['log'])
&& isset($_COOKIE['autologin'])
&& $row = db_fetch_assoc(db_query("SELECT Login, cust_password FROM ".CUSTOMERS_TABLE." WHERE MD5(CONCAT(Login,cust_password,random))='".xToText($_COOKIE['autologin'])."'".(CONF_COOKIE_LOGIN_ADMIN?"":" AND TRIM(actions) =''")." LIMIT 1")))
regAuthenticate($row['Login'], cryptPasswordDeCrypt($row['cust_password'],null), false);
# END cookieligin



6. в файле head.tpl.html где-нибудь после загрузки jquery (строка типа
<script type="text/javascript" src="http://ajax.googleap...n.js"></script>
или <script type="text/javascript" src="http://code.jquery.c...n.js"></script>)

вставляем


{* BEGIN cookieligin *}
<script type='text/javascript' src='data/{$smarty.const.TPL}/cookies.js'></script>

{literal}
<script>
function cookielogin(formname)
{
$.ajax({
url: '/index.php?do=autologin&login='+$("#user_login").val()+'&password='+$("#user_pw").val(),
type: "GET",
error: function(req, text, error) {alert('AJAX error: ' + text + ' | ' + error);},
success: function (answer)
{
if (answer == '0') deleteCookie('autologin');
else setCookie('autologin', answer, {/literal}{$smarty.const.CONF_COOKIE_LOGIN_LIFETIME}{literal}, '/');
formname.submit();
}
});
}
</script>
{/literal}
{* END cookieligin *}



7. заменяем файл authorization.tpl.html либо модифицируем свой аналогичным образом.

------------------
После всего этого в админке в разделе "Модули" появится новый модуль "Автологин".
Уровень доступа к этому модулю "Общие настройки" (это для тех, у кого кроме админов с полным доступом и клиентов есть еще пользователи с разными уровнями доступа в админке).

Прикрепленные файлы

  • Прикрепленный файл  autologin.zip   46.06К   5 Количество загрузок:

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)