Здравствуйте! На моём сервисе ведётся собственная база пользователей.
Доступна аутентификация по емейл (обязательное поле), а также oAuth2
Решил добавить форум на phpBB, но чтобы пользователи сразу могли общаться, не перелогиниваясь.
Возможно ли это?
Или выход единственный - забивать какие-то костыли по синхронизации БД пользователей форума с моими пользователями?
Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Внешние пользователи: возможно ли?
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 5 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Внешние пользователи: возможно ли?
Teml, в phpBB есть поддержка oAuth.
Костыль простой: автоматически добавлять юзера в базу данных phpBB, когда он входит на ваш сайт. Где-то на просторах сети, возможно, есть готовый скрипт. Примерно так (черновик):
Регистрацию на форуме отключить. Добавить на форум ссылки "Вход" и "Регистрация", ведущие на соотв. страницы сайта. Ну и при создании форума ввести те же данные админа, которые используются на сайте.
Костыль простой: автоматически добавлять юзера в базу данных phpBB, когда он входит на ваш сайт. Где-то на просторах сети, возможно, есть готовый скрипт. Примерно так (черновик):
Код: Выделить всё
<?php
// Это какой-то скрипт вашего сайта
// В этой точке юзер уже авторизован на сайте
// и у нас есть его данные: $username $password $remember_me $email
$username = 'test';
$password = '111111';
$remember_me = 1;
$email = 'test@gmail.com';
// Далее авторизуем юзера на форуме
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = 'php';
include($phpbb_root_path . 'common.php');
$user->session_begin();
$auth->acl($user->data);
$user->setup();
if ($user->data['is_registered'])
{
// Юзер уже авторизован
}
else
{
$result = $auth->login($username, $password, $remember_me, 1, 0);
if ($result['status'] == LOGIN_SUCCESS)
{
// Успешно авторизовался
}
elseif ($result['status'] == LOGIN_ERROR_USERNAME)
{
// Не удалось авторизоваться, пользователя с таким именем не существует
// Создаём его
if (!function_exists('user_add'))
include $phpbb_root_path . 'includes/functions_user.php';
$passwords_manager = $phpbb_container->get('passwords.manager');
$user_row = array(
'username' => $username,
'user_password' => $passwords_manager->hash($password),
'user_email' => $email,
'group_id' => 2,
'user_type' => 0,
);
user_add($user_row);
// Перезагружаем страницу
redirect($_SERVER['REQUEST_URI']);
}
else
{
// Пользователь существует, но ошибка авторизации
}
}
Регистрацию на форуме отключить. Добавить на форум ссылки "Вход" и "Регистрация", ведущие на соотв. страницы сайта. Ну и при создании форума ввести те же данные админа, которые используются на сайте.
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 5 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Внешние пользователи: возможно ли?
Спасибо! Даже со скриптом.
всё гениальное - просто....
до этого было (реализовано) решение добавлять юзера в базу данных phpBB только когда он пытается с сайта на форум зайти!
Действительно, по событию "Добавление/удаление/изменение" данных пользователя на моём сайте - дублировать всё в БД форума, и вроде никаких проблем нет. Даже если данные пользователя изменились (например, он(а) поменял(а) свою фамилию) - то всё синхронизируется и проблем вроде быть не должно...
честно - "ход конём"!автоматически добавлять юзера в базу данных phpBB, когда он входит на ваш сайт
всё гениальное - просто....
до этого было (реализовано) решение добавлять юзера в базу данных phpBB только когда он пытается с сайта на форум зайти!
Действительно, по событию "Добавление/удаление/изменение" данных пользователя на моём сайте - дублировать всё в БД форума, и вроде никаких проблем нет. Даже если данные пользователя изменились (например, он(а) поменял(а) свою фамилию) - то всё синхронизируется и проблем вроде быть не должно...
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 5 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Внешние пользователи: возможно ли?
Добрый день!
Задам ещё пару вопросов, чтобы не накосячить чего
Отключение регистрации на форуме - "штатная" операция?
Или это означает замену ссылок "вход" и "регистрация" на вход и регистрацию на моём сервисе?
Просто подумалось, не будет ли проблем.... что произойдёт если:
1. сессия на форуме закончилась (или "$remember_me = 1" указывается, чтобы сессия не заканчивалась?)
2. если пользователю скинули адрес треда по ссылке, соответственно, если он не авторизован и жмёт кнопку "ответить" - его должно выкинуть на авторизацию в сервисе, а обратно-то потом... никак?
3. похоже, то же самое, что и п.2: пользователю скинули ссылку, но она в скрытом разделе, а он не авторизован - его выбросит на авторизацию в сервисе?
Задам ещё пару вопросов, чтобы не накосячить чего
главный вопрос
Отключение регистрации на форуме - "штатная" операция?
Или это означает замену ссылок "вход" и "регистрация" на вход и регистрацию на моём сервисе?
Просто подумалось, не будет ли проблем.... что произойдёт если:
1. сессия на форуме закончилась (или "$remember_me = 1" указывается, чтобы сессия не заканчивалась?)
2. если пользователю скинули адрес треда по ссылке, соответственно, если он не авторизован и жмёт кнопку "ответить" - его должно выкинуть на авторизацию в сервисе, а обратно-то потом... никак?
3. похоже, то же самое, что и п.2: пользователю скинули ссылку, но она в скрытом разделе, а он не авторизован - его выбросит на авторизацию в сервисе?
Re: Внешние пользователи: возможно ли?
Teml, операция штатная: админка -> Регистрация пользователей -> Активация учётных записей -> Отключить регистрацию. Ссылка "Регистрация" исчезнет. Можно и не отключать, просто заменить ссылку.
Проблемы, конечно, могут быть, надо продумывать все эти ситуации.
1. Юзер перейдёт по ссылке "Вход", которую вы подменили, и попадёт на форму входа вашего сервиса. Сработает тот скрипт и залогинит юзера на форуме. Соответственно, в скрипте и в форме входа сервиса надо предусмотреть такой вариант (я его предусмотреть не могу, т.к. не знаю, как устроен сервис). $remember_me=1 - чтобы сессия не заканчивалась, пока юзер не удалит куки.
2, 3. Юзер попадёт на форму входа phpBB.
P.S. Если ваш сервис сделан на одной из распространённых CMS, к ней может существовать готовый мост для phpBB.
Проблемы, конечно, могут быть, надо продумывать все эти ситуации.
1. Юзер перейдёт по ссылке "Вход", которую вы подменили, и попадёт на форму входа вашего сервиса. Сработает тот скрипт и залогинит юзера на форуме. Соответственно, в скрипте и в форме входа сервиса надо предусмотреть такой вариант (я его предусмотреть не могу, т.к. не знаю, как устроен сервис). $remember_me=1 - чтобы сессия не заканчивалась, пока юзер не удалит куки.
2, 3. Юзер попадёт на форму входа phpBB.
- Если он ранее заходил на сервис, то уже внесён в базу данных phpBB - теперь он просто введёт свой логин/пароль и попадёт обратно в тред.
- Если он ещё не зарегистрирован на сервисе и сооответственно на форуме, то тоже всё просто - жмёт "Регистрацию" и т.д.
- Сложный вариант - если юзер зарегистрирован на сервисе, но его нет в базе phpBB (т.е. он давно не заходил на сервис и попал на форум по прямой ссылке). Тут, наверное, проще всего сделать, чтобы вместо формы входа phpBB сразу шло перенаправление на форму входа сервиса. А сервис может узнать, откуда пришёл юзер, по полю
$_POST['redirect']
, которое есть в форме входа phpBB, или по рефереру$_SERVER['HTTP_REFERER']
, и перенаправлять туда после авторизации. Ну а в идеале на стороне phpBB тоже должен быть какой-то синхронизирующий скрипт.
Какие файлы отвечают за форму входа:
includes\functions.php -> login_box()
styles\prosilver\template\login_body.html
styles\prosilver\template\login_body.html
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 5 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Внешние пользователи: возможно ли?
Только сейчас для меня дошло, что мы отключаем только регистрацию.
Вход по логину-паролю остаётся:
Как я понимаю, ключевое поле в пользователях форума - логин.
А как тогда пользователь заходит по oAuth2 ? например, гугл, который отдаёт только емейл?
В моей базе ключевым является поле емейл (и тогда при регистрации с гугла вопросов не возникает), а логин... его система генерирует, идаже пользователю не показывает, если он регится с соц.сети.
А зайдя в настройки его можно менять... может, это неправильно..
Re: Внешние пользователи: возможно ли?
Про oAuth ничего не могу сказать.
Вход в phpBB штатно только по логину, есть расширение для email, не знаю насколько качественное: https://www.phpbb.com/community/viewtopic.php?t=2474801
Вход в phpBB штатно только по логину, есть расширение для email, не знаю насколько качественное: https://www.phpbb.com/community/viewtopic.php?t=2474801