Game Dev — Регистрация пользователей и управление БД (нужен совет)

Привет, ребята, надеюсь, у вас всё хорошо.

Это общий запрос о помощи с направлением — мы хотим использовать систему регистрации/управления пользователями/БД Discourse для регистрации тех же данных в нашей внешней базе данных игры (чтобы игрок мог использовать те же учётные данные для входа в игру).

В данный момент изучаем репозиторий Git, чтобы понять, как всё устроено.

Как уже упоминалось, общий план таков: когда пользователь регистрируется на форуме, Discourse должен регистрировать данные пользователя в нашей базе данных игры (размещённой на другом VPS). Если они обновляют пароль или электронную почту, это также должно отражаться в нашей SQL-базе данных.

Уже несколько часов назад запустили свой собственный форум Discourse, так что пока ещё изучаем его.

Так что мой вопрос: есть ли что-то в Discourse, на что нам стоит обратить внимание в первую очередь, чтобы начать работу над этим?

Волшебные слова — «DiscourseConnect» и «провайдер идентификации» :wink:

Отлично, спасибо, что прислали это!

Похоже, что SSO / DiscourseConnect требует проверки адресов электронной почты третьей стороной.

Это проблема для нашей конкретной настройки, так как мы хотим, чтобы Discourse, как обычно, занимался проверкой адресов электронной почты и управлением учетными записями, но просто передавал данные базы данных в нашу игровую БД.

По сути, это обратный процесс по сравнению с SSO.

Проще говоря: Discourse должен обрабатывать всё, мне нужно лишь получать некоторую информацию о пользователях из его базы данных.

Когда вы используете Discourse в качестве провайдера идентификации, как предложил Ричард, Discourse возьмёт на себя проверку электронной почты.

Когда пользователь проходит процесс SSO в Discourse, а затем возвращается на ваш сайт, вы можете использовать ответ, который Discourse добавляет в виде встроенной строки запроса к параметру sso. Этот ответ содержит email, имя пользователя, имя, группы и т. д. (но не пароль — это было бы плохой идеей). Вы можете извлечь эти данные и корректно проверить их, используя предоставленную подпись sig.

Хм, хорошо.

Как уже упоминалось, это не веб-сайт, в который Discourse будет отправлять данные.

Это игровой сервер — другими словами, просто VPS с запущенным MySQL.

Старый рабочий процесс был следующим:
Unity заполняет таблицы SQL, когда пользователи «регистрируют учётную запись».

То, что я хочу сделать, — использовать Discourse в качестве провайдера регистрации и управления учётными записями.

То есть пользователи регистрируются через Discourse и используют эти данные для входа на игровой сервер (через клиент Unity).

Мне нужен надёжный способ передачи данных пользователей Discourse в базу данных MySQL.
(Обе системы находятся на одной машине).

Для этого мы настроили обёртку для внешних данных (foreign data wrapper) для подключения Postgres к MySQL, а также триггеры для соответствующего заполнения данных.

Затем, когда пользователь введёт свой (Discourse) адрес электронной почты и пароль в игре, он сможет войти — теоретически.

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

Итак, ещё раз: для SSO нет веб-сайта, есть только Discourse и другой VPS, на котором работает игровой сервер, к которому подключаются клиенты.