Версия IPS: 4.2
Хак интеграция DLE с IPS 4.2.x., инструкция для создания общею авторизацию с форумом Invision Power Suite и Datalife Engine.
Что даст вам эта интеграция? Главным образом использовать совместно базу двух систем для мгновенной авторизации пользователей и сайта и веб-форума. Хак DLE интеграции с IPS 4.2.x будет работать только, если ваши базы данных на локальном сервере и при подключении вы применяете localhost, то есть вам доступен точный адрес до базы данных - иначе работать не будет.
При наличие пользователя в базе данных DLE, то в системе IPS, он сможет без проблем авторизоваться, и не нужно проходить повторную авторизацию.
При этом в системе IPS создаётся пользователь со всеми данными из базе сайта Datalife Engine. Работает односторонне.
Инструкция:
Открываем админку IPS и переходим в управление авторизацией: (на примере IPS v4.2.5)
Интеграция DLE 10-12 + IPS 4.2.x
Активируем внешнюю авторизацию в админке IPS. Если вас не перенесло автоматически, то нажмите на карандаш справа. Заполняем данные базы данных, где находится DLE.
Интеграция DLE 10-12 + IPS 4.2.x
Детали схемы базы данных:
- Заполняем
- Таблица: *ваш префикс*_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 );
}Выше(!) ставим: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);СохраняемУстановка закончена!