
- Регистрация
- 17 Фев 2015
- Сообщения
- 21
- Симпатии
- 0
- Баллы
- 526
- Версия DLE
- 12.х

- Автор: Maxim Harder, Celsoft
- Версия DLE: 10.х, 11.х, 12.х
- Версия: 1.0
Данный метод будет работать только если ваши базы данных на локальном сервере и для подключения вы используете localhost, либо знаете точный адрес до базы данных - иначе не сработает.
Что может эта интеграция?
- Если есть пользователь в базе данных DLE, то система IPS авторизует его без проблем
- IPS создаёт пользователя на основе данных в базе DLE
- Работает односторонне
Инструкция:
- Открываем админку IPS и переходим в управление авторизацией: (на примере IPS v4.2.5)
- Активируем внешнюю авторизацию. Жмём.
если вас не перенесло автоматически, то нажмите на карандаш справа. - Заполняем данные базы данных, где находится DLE
- Детали схемы базы данных
Заполняем- Таблица: *ваш префикс*_users
- Колонка имён пользователей: name
- Колонка Email адресов: email
- Колонка паролей: password
- Тип шифрования паролей: Если у вас версия DLE 11.1 и меньше - берём значение MD5, если больше - Обычный текст
Дело в том, что начиная с версии 11.2 в DLE сменился хеш паролей и MD5 более не подходит. Мы всё подправим в файле внешней авторизации. Посему - можете спокойно обновлять DLE. - Дополнительное условие: banned<>1
Этот параметр не даст забанненым пользователям авторизоваться на форуме - Сохраняем
- Открываем файл форум/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);
- Сохраняем
- Ищем строчку (похожую)
- Радуемся
Последнее редактирование: