AltoCMS + phpBB: интеграция auth

Чтобы начать интеграцию или переезд с любой другой системой (в данном случае phpBB), необходимо в первую очередь научить Alto сверять пароли с уже имеющимися хешами источника.
common/classes/modules/user/entity/User.entity.class.php
Сюда из auth библиотеки phpBB необходимо добавить функции формирования и проверки хеша:

phpbb_hash()
phpbb_check_hash()
_hash_gensalt_private()
_hash_encode64()
_hash_crypt_private()
unique_id()


и немного подкрутить setPassword():

   public function setPassword($sPassword, $bEncrypt = false) {

        if ($bEncrypt) {
            //$this->_aData['user_password'] = $this->Security_Salted($sPassword, 'pass');
            $this->_aData['user_password'] = $this->phpbb_hash($sPassword);
        } else {
            $this->setProp('user_password', $sPassword);
        }
    }


И в экшене логина common/classes/actions/ActionLogin.class.php
меняем механизм проверки хеша:
            // * Сверяем хеши паролей и проверяем активен ли юзер
            //if ($this->Security_CheckSalted($oUser->getPassword(), $sUserPassword, 'pass') || $this->Security_CheckSalted($oUser->getPassword(), trim($sUserPassword), 'pass')) {
            if ($oUser->phpbb_check_hash(trim($sUserPassword), $oUser->getPassword())) {


Ставим плагин и связки юзер+пароль из БД phpBB будут работать.

По аналогии можно запилить поддержку auth механизмов и соответственно уже имеющихся пользователей любых других CMS / форумов / чего угодно. В entity добавляем механизм формирования хеша, в actionLogin — проверку.

Важно понимать, что это только всего лишь адаптация проверки пароля захешированного в phpbb(ex), если вам нужна реальная интеграция двух систем, это всего лишь перввый шажочек по данному направлению.

Похожие статьи

  • Кросс-доменная авторизация AltoCMS + PhpBB
    Когда систем становится больше чем одна но меньше чем множество, приходит пора задуматься о том, как же жить дальше. Правильное и красивое решение — перейти на следующий уровень и запилить авторизацию всех систем...

0 комментариев

Автор статьи запретил добавлять комментарии