Рабочая авторизация на сайте через API в DLE | Pandoge

Ulogin dle единая регистрация на сайте соц сети

Рабочая авторизация на сайте через API в DLE | Pandoge

Новая версия модуля dle с исправлениями uLogin v2.1 для DLE 9.5, 9.4, 9.3-позволит пользователям без регистрации получить единый доступ к ресурсам сайта с помощью аккаунта социальной сети (Google, Яндекс, Mail, ВКонтакте, Facebook и др.), а владельцам веб-ресурсов —получить дополнительный приток клиентов из социальных сетей и популярных порталов
uLoginDLEединая регистрация на сайте соц сети

Если Вам надо увеличить размер аватарки прочитайте
Обновление увеличение размера аватарки.txt
Обновил модуль устранен баг с аватарами спасибо Діма Ваврійчук обратившего на это внимание. У того у кого модуль уже установлен можно просто заменить файл модуля ulogin.php и изменить место подключения модуля в файле init.php.

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

Преимущества для владельцев веб-ресурсов:
– Простой понятный пользовательский интерфейс.
– Легкость и быстрота установки, настройки и управления виджетом uLogin.
– Поддержка различных способов авторизации пользователей.
– Дополнительный приток клиентов из популярных социальных сетей и порталов.
– Единое API получения данных пользователя (все данные предоставляются в
едином формате).
– Дополнительная возможность получения адреса электронной почты, номера телефона и другой информации о пользователе.

Для начала понадобится регистрация на веб-ресурсе ulogin ru

В файл login.tpl вашего шаблона выше формы авторизации вставляем (или вместо)

Внимание! У Вас нет прав для просмотра скрытого текста.

В файл index.php
после

 $tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

Вставить

$tpl->set( '{ulogin}', urlencode('http://' . $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI'] ));

В файл init.php в папке engine Внимание в этом месте в отличи от старой было изменено место вставки
после

if ($config['allow_registration'] == "yes") {

Вставить

require_once ENGINE_DIR . '/modules/ulogin.php';

В файл engine/inc/options.php
после

showRow( $lang['opt_sys_reggroup'], $lang['opt_sys_reggroupd'], makeDropDown( $sys_group_arr, "save_con[reg_group]", $config['reg_group'] ) );

Вставить

 showRow( $lang['opt_sys_regulogin'], $lang['opt_sys_regulogind'], makeDropDown( $sys_group_arr, "save_con[reg_group_ulogin]", $config['reg_group_ulogin'] ) );

В файл language/Russian/adminpanel.lng
после

'wysiwyg_language' => "ru",

Вставить

'opt_sys_regulogin' => "Установить пользователей авторизуются через ULogin в группе:", 'opt_sys_regulogind' => "Выберите группу в которую будут установлены пользователи для авторизации через ULogin",

Настройка :
Зайти в Админ панель – Настройки системы – Настройки пользователей
Выставить параметр «Помещать пользователей авторизуются через ULogin в группе:»
Предварительно можно создать спец. группу, например «ULogin»

Похожее:  Загрузить бумажный документ по QR-коду | СБИС Помощь

PS. там есть такая тонкость в uLogin данные которые передаются на блог можно поправить

    widget.js?display=panel&fields=first_name,last_name,bdate,email,nickname,photo&providers=vkontakte,m ailru,facebook,google,yandex&hidden=openid,odnokla ssniki,livejournal,twitter&redirect_uri={ulogin}

Чем их больше тем и логины будут более правдоподобные скажем ник и дата рождения и тд

Должен функционировать Data-Life Engine 9.5 и 8.5
Источник : Seozalex (seozalex ru)

Рекомендуем модули на dle uLogin единая регистрация на сайте социальной сети

ulogin_2_dle.zip [48,39 Kb] (cкачиваний: 387)

Рабочая авторизация на сайте через api в dle

Не знаю, как сейчас обстоят дела со встроенным API в CMS DataLife Engine, но в релизах ветки 10.* и 11.* точно есть одна проблема. А именно – при использовании метода:

$dle_api->external_auth($login, $password);

вместо реальной авторизации происходит простая проверка корректности логина и пароля указанного пользователя.

Очень странно, что в официальной документации этот метод описывается как «Авторизация по логину и паролю», хотя на деле, как я уже сказал ранее, происходит проверка корректности указанных данных.

Уверен, что многие, кто кастомизирует этот движок, столкнулись с этой проблемой, как, собственно, и я.

Весьма красивое решение мне удалось найти, создавая один из своих модулей, и выглядит оно так:

ini_set('error_reporting', 0);
ini_set('display_errors', 0);

define('DATALIFEENGINE', true);
define('ROOT_DIR', substr(dirname(__FILE__), 0, -12));
define('ENGINE_DIR', ROOT_DIR.'/engine');

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {

	include ENGINE_DIR.'/data/config.php';
	require_once ENGINE_DIR.'/modules/functions.php';
	include ENGINE_DIR.'/api/api.class.php';

	$login = (string)$_POST['login']; // Логин пользователя
	$password = (string)$_POST['password']; // Пароль пользователя

	if($dle_api->external_auth($login, $password)) {

		$_POST['login_name'] = $login;
		$_POST['login_password'] = $password;
		$_POST['login'] = 'submit';

		dle_session();

		require_once ENGINE_DIR.'/modules/sitelogin.php';

		echo '<script>window.location.replace(window.location.pathname);</script>'; // Обновляем страницу после авторизации

	} else {

		echo 'Данные не верны!';
	
	}

}

В этот PHP-скрипт (обработчик, который нужно размещать в папке /engine/ajax/ вашего сайта) через AJAX передаются данные, которые проверяются на корректность авторизации (через API) и уже посредством стандартной функции CMS происходит авторизация на сайте.

Стоит отметить, что способ универсален и не зависит от версии CMS.

Похожее:  Работа — это просто личный кабинет msto

Если что-то вам показалось непонятным – не стесняйтесь и задавайте свои вопросы в комментариях.

Хак единая регистрация для форума с dle и ip.board 3.1

Существует несколько вариант для решения данной проблемы, не все они работают, этот вариант был взят из статьи интеграции с dle 8.0 и 2.3.6, и переделан для 9.x IPB 3.1.X. По словам автора это рабочий вариант.

«Автор:» неизвестный
Адаптация под новую версию: Herurg
Данный работает только хак с DLE 9.x IP.Board 3.1.x (протестировано)

Итак установка :Хак Единая регистрация для форума с DLE и IP.Board 3.1

Открываем: dle/engine/modules/reg

Ищем:

require_once ENGINE_DIR . '/classes/parse.class.php';

Добавить ниже:

$ipb_dle_lan[0] = "Данное имя уже используется на форуме.";    $db_ipb_user = "пользователь";    $db_ipb_password = "пароль";    $db_ipb_namedb = "имя_базы";    $db_ipb_local = "localhost";    $db_ipb_error = 1; // 1 - показывать ошибки в соединении с бд форума, 0 - нет    $db_prefix_ipb = "префикс_если_его_нету_оставить_пустым";$ipb = new db;$ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error);

Найти:

global $lang, $db, $banned_info, $relates_word;

Заменить на:

global $lang, $db, $banned_info, $relates_word, $ipb, $ipb_dle_lan, $db_prefix_ipb;

Найти:

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '$email' OR LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'" );Добавить ниже:$ipb_test_name = $ipb->super_query ("SELECT COUNT(*) as count FROM {$db_prefix_ipb}members where name = '".strtolower($name)."'");        if ($ipb_test_name ['count'] > 0) $stop .= $ipb_dle_lan[0];

Найти:

$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );

Добавить ниже:

            $ipb_dle = new ipb_dle;            $salt = $ipb_dle->generate_password_salt(5);            $salt = addslashes($salt);            $ph = $ipb_dle->generate_compiled_passhash($salt, md5($_POST['password1']) );            $insert_ipb = $ipb->insert_id(); //ид вставки            $member_key = $ipb_dle->generate_auto_log_in_key();            $key_expire = $member_key * 60 * 60 * 24;            $ipb->query("INSERT INTO `{$db_prefix_ipb}members` (            member_id,            name,            members_l_username,            members_display_name,            members_l_display_name,            members_seo_name,            member_login_key,            member_login_key_expire,            email,            member_group_id,            joined,            ip_address,            time_offset,            allow_admin_mails,            language,            msg_show_notification,            members_auto_dst,            members_pass_hash,            members_pass_salt            )            VALUES (            0,            '$name',            '".strtolower($name)."',            '$name',            '".strtolower($name)."',            '".strtolower($name)."',            '".$ipb_dle->generate_auto_log_in_key()."',            '$key_expire',            '$email',            '3',            '".time()."',            '$_IP',            '3',            '1',            '1',            '1',            '0',            '$ph',            '$salt'            )");            $ipb_st = $ipb->super_query("select * from {$db_prefix_ipb}cache_store where cs_key = 'stats'");            $st_arr  = unserialize($ipb_st['cs_value']);            $st_arr['mem_count']  ;            $st_arr['last_mem_name'] = $name;            $st_arr['last_mem_id'] = $insert_ipb;            $st_arr2 = serialize($st_arr);            $ipb->query("UPDATE {$db_prefix_ipb}cache_store set cs_value = '$st_arr2' where cs_key = 'stats'");

Найти:

?>

Вот тут другой вариант в с register.php..

Открываем:
dle/engine/modules/register.php

Похожее:  11. Authorization

пробел, тут другие коды правильно.
дальше

Найти:
?>

Вставить выше

class ipb_dle{    function generate_password_salt($len=5)    {        $salt = '';        for ( $i = 0; $i < $len; $i   )        {            $num&nbsp;  = rand(33, 126);            if ( $num == '92' )            {             &nbsp;  $num = 93;            }            $salt .= chr( $num );        }        return $salt;    }    function generate_compiled_passhash($salt, $md5_once_password)    {        return md5( md5( $salt ) . $md5_once_password );    }        function generate_auto_log_in_key($len=60)    {        $pass = $this->generate_password_salt( $len );        return md5($pass);    }}

Вставить выше:

class ipb_dle{    function generate_password_salt($len=5)    {        $salt = '';        for ( $i = 0; $i < $len; $i   )        {            $num   = rand(33, 126);            if ( $num == '92' )            {                $num = 93;            }            $salt .= chr( $num );        }        return $salt;    }    function generate_compiled_passhash($salt, $md5_once_password)    {        return md5( md5( $salt ) . $md5_once_password );    }        function generate_auto_log_in_key($len=60)    {        $pass = $this->generate_password_salt( $len );        return md5($pass);    }}

Открываем: dle/engine/ajax/registration.php

Найти:

$db->query ("SELECT name FROM " . USERPREFIX . "_users WHERE LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'");        if ($db->num_rows() > 0)        {            $stop .= $lang['reg_err_20'];        }

Добавить ниже:

        $ipb_dle_lan[0] = "Данное имя уже используется на форуме.";        $db_ipb_user = "пользователь";        $db_ipb_password = "пароль";        $db_ipb_namedb = "имя_базы";        $db_ipb_local = "localhost";        $db_ipb_error = 1; // 1 - показывать ошибки в соединении с бд форума, 0 - нет        $db_prefix_ipb = "префикс_если_его_нету_оставить_пустым";        $ipb = new db;        $ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error);        $ipb_test_name = $ipb->super_query ("SELECT COUNT(*) as count FROM {$db_prefix_ipb}members where name = '".strtolower($name)."'");        if ($ipb_test_name ['count'] > 0) $stop .= $ipb_dle_lan[0];

Хак дле протестирован , работает единая регистрация только в одну сторону: Регистрируясь на портале DLE вы автоматически регистрируетесь на форуме IP.Board

Установка ЗАКОНЧЕНА!

Рекомендуем скачать хак Единая регистрация для форума с DLE 9.x и IP.Board 3.1

edinaya-registraciya-s-dle-9.-ip.board-3.1.rar [2,58 Kb] (cкачиваний: 108)

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector