Перейти к публикации

Описание документа

Это небольшая инструкция по созданию общей авторизации между двумя системами - Datalife Engine и Invision Power Suite. Данный метод будет работать только если ваши базы данных на локальном сервере и для подключения вы используете localhost, либо знаете точный адрес до базы данных - иначе не сработает.

Версия DLE: 10.х, 11.х, 12.х
Версия IPS: 4.2


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

:001-wink: Инструкция:

1. Открываем админку IPS и переходим в управление авторизацией: (на примере IPS v4.2.5):

1519485155_19-vneshnyaya-baza-dannyh-yandeks_brauzer.png

2. Активируем внешнюю авторизацию в админке IPS:

Цитата

если вас не перенесло автоматически, то нажмите на карандаш справа.
Заполняем данные базы данных, где находится DLE

3. Детали схемы базы данных:

1519485149_55-vneshnyaya-baza-dannyh-yandeks_brauzer.png

4. Заполняем:
Таблица: *ваш префикс*_users
Колонка имён пользователей: name
Колонка Email адресов: email
Колонка паролей: password
Тип шифрования паролей: Если у вас версия DLE 11.1 и меньше - берём значение MD5, если больше - Обычный текст

Цитата

Дело в том, что начиная с версии 11.2 в DLE сменился хеш паролей и MD5 более не подходит. Мы всё подправим в файле внешней авторизации. Посему - можете спокойно обновлять DLE.


Дополнительное условие: banned<>1

Цитата

Этот параметр не даст забанненым пользователям авторизоваться на форуме

5. Сохраняем

6. Открываем файл форум/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 );
        }

Выше(!) ставим:

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:

и ниже:

}

ищем:

return md5( $password );

меняем на:

return md5( md5( $password ) );

ищем:

return $password;

меняем на:

return password_hash($password, PASSWORD_DEFAULT);


7. Сохраняем 

:007-happy: Установка закончена :007-happy:


 Отправить жалобу

×