DevCraft - Разработка приложений

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

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

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

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

Maxim

Интересующийся
Команда форума

Maxim

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

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

"4.2.5" "4.4.4"


  • Инструкция:
    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. Радуемся



  • Точно не уловил с какой версией они обновили проверку данных, но на актуальной, на данный момент (4.4.4), выглядит всё вот, что не нужно править никаких файлов.

    1. Заходим в админпанеле IPS в раздел "Авторизация и регистрация"
    Screenshot_1.png
    2. Нажимаем на кнопку "Создать"
    w-ES3z7UQF2pDzzgTx-T6Q.png
    3. Выбираем "База данных MySQL"
    373
    4. Указываем название соединения, данные базы данных вашего DLE и прописываем нужные поля.
    Заполняем
    • Таблица: *ваш префикс*_users
    • Колонка имён пользователей: name
    • Колонка Email адресов: email
    • Колонка паролей: password
    • Тип шифрования паролей: Выбираем "Другой". Описание ниже.
    • Дополнительное условие: banned<>1
    Если у вас DLE 11.1 и ниже, то в появившееся поле "Хэш-код пароля" прописываем:
    DLE 11.1:
    return md5(md5($providedPassword));
    В поле "Код подтверждения пароля" вставляем (!Не уверен в данной комбинации!):
    DLE 11.1:
    return \IPS\Login::compareHashes( $row['password'], md5( md5( $providedPassword));
    В версиях DLE 11.2 и выше в поле "Хэш-код пароля" вставляем:
    DLE 11.2:
    return password_hash( $providedPassword, PASSWORD_DEFAULT );
    В поле "Код подтверждения пароля" вставляем:
    DLE 11.2:
    return password_verify( $providedPassword, $row['password'] );
    Так-же, IPS даёт нам на выбор, что должно произойти с данными пользователей, что очень удобно.
    374

    Настраивайте под себя! Удачи!

 
Последнее редактирование:

catyr

Новичок

catyr

Новичок
Реакции
0% 0% 0%
Что то на IPS Community Suite 4.3.6 не работает интеграция:( и выше. Хотя на 4.2.8 все прекрасно.
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Что то на IPS Community Suite 4.3.6 не работает интеграция:( и выше. Хотя на 4.2.8 все прекрасно.
не тестировал пока ещё... через пару месяцев освобожусь и гляну точно
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Обновил инструкцию для версии IPS 4.4.4
 

Serviak

Новичок

Serviak

Новичок
Реакции
100% 0% 0%
А для DLE 13.2 будет работать?
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%

Serviak

Новичок

Serviak

Новичок
Реакции
100% 0% 0%
Будет работать на любой, не зависит от версии или движка дле, только от базы данных
А аватар? Как сделать так, что бы использовался общий аватар? Или придётся оставить так как есть? Просто хотелось бы экономить место на диске)
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
А аватар? Как сделать так, что бы использовался общий аватар? Или придётся оставить так как есть? Просто хотелось бы экономить место на диске)
для этого нужно писать мост между движками
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%

Serviak

Новичок

Serviak

Новичок
Реакции
100% 0% 0%
Всё сделал. Отлично работает) Спасибо) Не хватает вот только общего аватара)
 

Верх