Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Интеграция DLE 10-12 + IPS 4.2.x.
Скачать бесплатно Интеграция DLE 10-12 + IPS 4.2.x.
Это небольшая инструкция по созданию общей авторизации между двумя системами - Datalife Engine и Invision Power Suite.
Данный метод будет работать только если ваши базы данных на локальном сервере и для подключения вы используете localhost, либо знаете точный адрес до базы данных - иначе не сработает.
Версия DLE: 10.х, 11.х, 12.х
Версия IPS: 4.2
Что может эта интеграция?
Если есть пользователь в базе данных DLE, то система IPS авторизует его без проблем
IPS создаёт пользователя на основе данных в базе DLE
Работает односторонне
Инструкция:
Открываем админку IPS и переходим в управление авторизацией: (на примере IPS v4.2.5)
Активируем внешнюю авторизацию в админке IPS.
если вас не перенесло автоматически, то нажмите на карандаш справа.
Заполняем данные базы данных, где находится DLE
Детали схемы базы данных
Заполняем
Таблица: *ваш префикс*_users
Колонка имён пользователей: name
Колонка Email адресов: email
Колонка паролей: password
Тип шифрования паролей: Если у вас версия DLE 11.1 и меньше - берём значение MD5, если больше - Обычный текст
Дело в том, что начиная с версии 11.2 в DLE сменился хеш паролей и MD5 более не подходит. Мы всё подправим в файле внешней авторизации. Посему - можете спокойно обновлять DLE.
Дополнительное условие: banned<>1
Этот параметр не даст забанненым пользователям авторизоваться на форуме
Сохраняем
Открываем файл форум/system/Login/External.php
Ищем строчку (похожую)
if ( !\IPS\Login::compareHashes( $this->encryptedPassword( $values['password'] ), $result[ $this->settings['db_col_pass'] ] ) )
{
throw new \IPS\Login\Exception( 'login_err_bad_password', \IPS\Login\Exception::BAD_PASSWORD, NULL, $member );
}
{
throw new \IPS\Login\Exception( 'login_err_bad_password', \IPS\Login\Exception::BAD_PASSWORD, NULL, $member );
}
Выше(!) ставим:
switch ( $this->settings['db_encryption'] )
{
case 'plaintext':
if(!password_verify($values['password'], $result[ $this->settings['db_col_pass'] ] ) ) {
throw new \IPS\Login\Exception( 'login_err_bad_password', \IPS\Login\Exception::BAD_PASSWORD, NULL, $member );
}
default:
{
case 'plaintext':
if(!password_verify($values['password'], $result[ $this->settings['db_col_pass'] ] ) ) {
throw new \IPS\Login\Exception( 'login_err_bad_password', \IPS\Login\Exception::BAD_PASSWORD, NULL, $member );
}
default:
и ниже
}
Ищем:
return md5( $password );
меняем на
return md5( md5( $password ) );
Ищем:
return $password;
меняем на
return password_hash($password, PASSWORD_DEFAULT);
Сохраняем
Установка закончена!
Автор: Maxim Harder, Celsoft