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

Post to Twitter Tweet This Post

  • Интеграция авторизации phpbb3
  • anonymous в phpbb3
  • phpbb3 Warning includes/auth/auth_.php
  • Оставить комментарий