Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Внешние пользователи: возможно ли?

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Внимание: с 7 ноября 2020 года phpBB Group завершено дальнейшее развитие phpBB версии 3.2, а с 1 августа 2024 года будет прекращена её поддержка.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.

Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Teml
phpBB 1.0.0
Сообщения: 5
Стаж: 5 лет 5 месяцев
Благодарил (а): 2 раза

Внешние пользователи: возможно ли?

Сообщение Teml »

Здравствуйте! На моём сервисе ведётся собственная база пользователей.
Доступна аутентификация по емейл (обязательное поле), а также oAuth2

Решил добавить форум на phpBB, но чтобы пользователи сразу могли общаться, не перелогиниваясь.

Возможно ли это?

Или выход единственный - забивать какие-то костыли по синхронизации БД пользователей форума с моими пользователями?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 36 раз
Поблагодарили: 1435 раз

Re: Внешние пользователи: возможно ли?

Сообщение Nekstati »

Teml, в phpBB есть поддержка oAuth.

Костыль простой: автоматически добавлять юзера в базу данных 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
	{
		// Пользователь существует, но ошибка авторизации
	}
}
 
Регистрацию на форуме отключить. Добавить на форум ссылки "Вход" и "Регистрация", ведущие на соотв. страницы сайта. Ну и при создании форума ввести те же данные админа, которые используются на сайте.
Teml
phpBB 1.0.0
Сообщения: 5
Стаж: 5 лет 5 месяцев
Благодарил (а): 2 раза

Re: Внешние пользователи: возможно ли?

Сообщение Teml »

Спасибо! Даже со скриптом.
автоматически добавлять юзера в базу данных phpBB, когда он входит на ваш сайт
честно - "ход конём"!
всё гениальное - просто....

до этого было (реализовано) решение добавлять юзера в базу данных phpBB только когда он пытается с сайта на форум зайти!

Действительно, по событию "Добавление/удаление/изменение" данных пользователя на моём сайте - дублировать всё в БД форума, и вроде никаких проблем нет. Даже если данные пользователя изменились (например, он(а) поменял(а) свою фамилию) - то всё синхронизируется и проблем вроде быть не должно...
Teml
phpBB 1.0.0
Сообщения: 5
Стаж: 5 лет 5 месяцев
Благодарил (а): 2 раза

Re: Внешние пользователи: возможно ли?

Сообщение Teml »

Добрый день!
Задам ещё пару вопросов, чтобы не накосячить чего :)
Nekstati писал(а): 26.08.2019 17:56 Регистрацию на форуме отключить. Добавить на форум ссылки "Вход" и "Регистрация", ведущие на соотв. страницы сайта. Ну и при создании форума ввести те же данные админа, которые используются на сайте.
главный вопрос
Отключение регистрации на форуме - "штатная" операция?

Или это означает замену ссылок "вход" и "регистрация" на вход и регистрацию на моём сервисе?


Просто подумалось, не будет ли проблем.... что произойдёт если:

1. сессия на форуме закончилась (или "$remember_me = 1" указывается, чтобы сессия не заканчивалась?)

2. если пользователю скинули адрес треда по ссылке, соответственно, если он не авторизован и жмёт кнопку "ответить" - его должно выкинуть на авторизацию в сервисе, а обратно-то потом... никак?

3. похоже, то же самое, что и п.2: пользователю скинули ссылку, но она в скрытом разделе, а он не авторизован - его выбросит на авторизацию в сервисе?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 36 раз
Поблагодарили: 1435 раз

Re: Внешние пользователи: возможно ли?

Сообщение Nekstati »

Teml, операция штатная: админка -> Регистрация пользователей -> Активация учётных записей -> Отключить регистрацию. Ссылка "Регистрация" исчезнет. Можно и не отключать, просто заменить ссылку.

Проблемы, конечно, могут быть, надо продумывать все эти ситуации.

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
P.S. Если ваш сервис сделан на одной из распространённых CMS, к ней может существовать готовый мост для phpBB.
Teml
phpBB 1.0.0
Сообщения: 5
Стаж: 5 лет 5 месяцев
Благодарил (а): 2 раза

Re: Внешние пользователи: возможно ли?

Сообщение Teml »

Nekstati писал(а): 28.08.2019 14:25 операция штатная: админка -> Регистрация пользователей -> Активация учётных записей -> Отключить регистрацию. Ссылка "Регистрация" исчезнет. Можно и не отключать, просто заменить ссылку.
Только сейчас для меня дошло, что мы отключаем только регистрацию.

Вход по логину-паролю остаётся:
Nekstati писал(а): 28.08.2019 14:25 Если он ранее заходил на сервис, то уже внесён в базу данных phpBB - теперь он просто введёт свой логин/пароль и попадёт обратно в тред.
Как я понимаю, ключевое поле в пользователях форума - логин.

А как тогда пользователь заходит по oAuth2 ? например, гугл, который отдаёт только емейл?

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

А зайдя в настройки его можно менять... может, это неправильно..
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 36 раз
Поблагодарили: 1435 раз

Re: Внешние пользователи: возможно ли?

Сообщение Nekstati »

Про oAuth ничего не могу сказать.

Вход в phpBB штатно только по логину, есть расширение для email, не знаю насколько качественное: https://www.phpbb.com/community/viewtopic.php?t=2474801
Ответить

Вернуться в «Поддержка phpBB 3.2.x»