phpBB3 Внешняя авторизация

Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло — готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы.

Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать разработку у специалистов.

К счастью, разработчики phpBB предусмотрели эту проблему, и заранее сделали механизм авторизации легко расширяемым. В этой статье мы попробуем написать свой простой плагин авторизации.

Запрет регистрации

Логично предположить, что перед активацией нашего модуля авторизации мы должны запретить регистрацию в самом phpBB. Создавая плагин авторизации заранее предпологается, что пользователи будут регистрироваться в другом месте.

Для этого в администраторском аккаунте перейдите на вкладку Общие, и в левом меню выберите “Регистрация пользователей”. Далее отключаем регистрацию:

cancel_sign

Все плагины авторизации расположены в директории includes/auth/. Там уже есть несколько готовых плагинов.
auth_db — плагин, включенный по умолчанию. Он отвечает за авторизацию через базу данных phpBB.
auth_apache — плагин, соответственно для авторизации использующий встроенные средства веб-сервера Apache.
auth_ldap — плагин, использующий для аутентификации сетевой протокол доступа к каталогам LDAP

Пусть наш плагин будет называться auth_simple. Создайте файл auth_simple.php в директории includes/auth с таким содержимым:

< ?php

/**
*
* Пример плагина авторизации для phpBB3
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}

/**
* Функция, отвечающая за авторизацию.
*/
function login_simple(&$username, &$password)
{

// Запрещаем пустой пароль.
if (!$password)
{
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'NO_PASSWORD_SUPPLIED',
'user_row' => array('user_id' => ANONYMOUS),
);
}

// Запрещаем пустое имя пользователя.
if (!$username)
{
return array(
'status' => LOGIN_ERROR_USERNAME,
'error_msg' => 'LOGIN_ERROR_USERNAME',
'user_row' => array('user_id' => ANONYMOUS),
);
}

// Обычная проверка на правильность.
if ( ("test" === $username) && ("test" === $password) )
{
// Сообщаем, что авторизация прошла успешно.
return array(
'status' => LOGIN_SUCCESS,
'error_msg' => false,
'user_row' => array(
"username" => $username, // Отображаемое имя пользователя
"user_password" => phpbb_hash($password), // phpbb-хеш пароля
"user_email" => "test@v673.com", // E-mail пользователя, если существует
"user_type" => USER_NORMAL // Тип пользователя, объявленный в constants.php
),
);

}

// Возвращаем ошибку авторизации.
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'LOGIN_ERROR_PASSWORD',
'user_row' => array('user_id' => ANONYMOUS),
);

}

?>

Теперь необходимо активировать наш плагин авторизации. Для этого перейдите в вкладку Общие и в левом меню выберите пункт Аутентификация. Выберите наш метод авторизации:

set_simple_auth

  • Интеграция авторизации phpbb3
  • anonymous в phpbb3
  • phpbb3 Warning includes/auth/auth_.php
  • 4 комментариев на “phpBB3 Внешняя авторизация”

    1. KunRAG:

      в версии форума 3.4.0 показывает одни каракули, когда захожу в аутентификацию… Так и не разобрался с этой проблемой.

      А вы можете написать статью с подробной интеграцией регистрации форума на сайт? Ну чтобы система регистрации была единая… Думаю будет очень полезно для новичков

      заранее, спасибо.

    2. saintist:

      по поводу каракулей, стоит проверить кодировку файлов

      я постараюсь выделить время и более подробно написать в ближайшее время об интеграции

    3. KunRAG:

      Благодарю.

      Кодировку менял. Не помогает.

      [phpBB Debug] PHP Notice: in file /adm/index.php on line 150: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
      [phpBB Debug] PHP Notice: in file /adm/index.php on line 152: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
      [phpBB Debug] PHP Notice: in file /adm/index.php on line 153: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
      [phpBB Debug] PHP Notice: in file /adm/index.php on line 154: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)

      Вот список ошибок… не проходит модификация шапки как я понял…

    4. saintist:

      [phpBB Debug] PHP Notice: in file /adm/index.php on line 150: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)

      говорит о том что используется механизм сессий, где то ошибка, почитай как с ним работать там все просто, session_start() и т.п.

      чтобы обойти ошибку используй буферизацию вывода (ob_start(), ob_end_flush());

    Оставить комментарий