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

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

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


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

  • Установка:
    1. Открыть админпанель IPS [на примере v4.2.5] и перейти в управление авторизацией:

    2. Активировать внешнюю авторизацию, нажав:


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

    • Таблица: *ваш префикс*_users
    • Колонка имён пользователей: name
    • Колонка Email адресов: email
    • Колонка паролей: password
    • Тип шифрования паролей: Если у вас версия DLE 11.1 и меньше - берём значение MD5, если больше - обычный текст. Дело в том, что начиная с версии 11.2 в DLE сменился хеш паролей и MD5 более не подходит. Мы всё подправим в файле внешней авторизации. Посему - можете спокойно обновлять DLE.
    • Дополнительное условие: banned<>1
      Этот параметр не даст забанненым пользователям авторизоваться на форуме.

    4. Открыть форум/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 );
    				}
    				break;
                
    			default:

    А ниже, это:
    				break;
    		}

    Найти далее:
    return md5( $password );

    Заменить на:
    return md5( md5( $password ) );

    Найти далее:
    return $password;

    Заменить на:
    return password_hash($password, PASSWORD_DEFAULT);

    Готово!
     
    Версия DLE: 10.х-12.х
    Кодировка: win-1251 + utf-8
    Автор: Maxim Harder
    Источник
    Информация
    Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.