Приветствую!

Это новый и обновлённый сайт maxim-harder.de! Если вы были зарегистрированы на старом сайте, то восстановите свой пароль на сайте!

Создай свой аккаунт!

Хак DLE+IPS/IPB Интеграция

Maxim

Проверенный
Команда форума
Регистрация
17 Фев 2015
Сообщения
17
Симпатии
0
Баллы
526
#1
Версия DLE
12.х
1510831226_dleips.png
  • Автор: Maxim Harder, Celsoft
  • Версия DLE: 10.х, 11.х, 12.х
  • Версия: 1.0
Это небольшая инструкция по созданию общей авторизации между двумя системами - Datalife Engine и Invision Power Suite.
Данный метод будет работать только если ваши базы данных на локальном сервере и для подключения вы используете localhost, либо знаете точный адрес до базы данных - иначе не сработает.

Что может эта интеграция?
  • Если есть пользователь в базе данных DLE, то система IPS авторизует его без проблем
  • IPS создаёт пользователя на основе данных в базе DLE
  • Работает односторонне


Инструкция:
  1. Открываем админку IPS и переходим в управление авторизацией: (на примере IPS v4.2.5)
    1510833624_2017-11-16-12_59_19-vneshnyaya-baza-dannyh-yandeks_brauzer.png
  2. Активируем внешнюю авторизацию. Жмём.
    1510833698_2017-11-16-13_00_56-metody-avtorizacii-yandeks_brauzer.png 1510833665_2017-11-16-13_01_30-metody-avtorizacii-yandeks_brauzer.png
    если вас не перенесло автоматически, то нажмите на карандаш справа.
  3. Заполняем данные базы данных, где находится DLE
  4. Детали схемы базы данных
    1510833857_2017-11-16-13_04_55-vneshnyaya-baza-dannyh-yandeks_brauzer.png
    Заполняем
    • Таблица: *ваш префикс*_users
    • Колонка имён пользователей: name
    • Колонка Email адресов: email
    • Колонка паролей: password
    • Тип шифрования паролей: Если у вас версия DLE 11.1 и меньше - берём значение MD5, если больше - Обычный текст
      Дело в том, что начиная с версии 11.2 в DLE сменился хеш паролей и MD5 более не подходит. Мы всё подправим в файле внешней авторизации. Посему - можете спокойно обновлять DLE.
    • Дополнительное условие: banned<>1
      Этот параметр не даст забанненым пользователям авторизоваться на форуме
    • Сохраняем
  5. Открываем файл форум/system/Login/External.php
    • Ищем строчку (похожую)
      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 );
              }
    • Выше(!) ставим:
      PHP:
              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 );
                      }
                      break;
              
                  default:
    • и ниже
      PHP:
                      break;
              }
    • Ищем
      PHP:
      return md5( $password );
    • меняем на
      PHP:
      return md5( md5( $password ) );
    • Ищем:
      PHP:
      return $password;
    • меняем на:
      PHP:
      return password_hash($password, PASSWORD_DEFAULT);
    • Сохраняем
  6. Радуемся
 
Последнее редактирование:
Сверху Снизу