На моём сайте Discourse установлен JS-плагин. Этот JS использует PocketBase для хранения данных. PocketBase — это «серверless»-сервис на базе SQLite, позволяющий хранить файлы и JSON-объекты. В PocketBase есть отличная система аутентификации на основе JWT: как только у пользователя появляется токен аутентификации, он может безопасно записывать данные напрямую в PocketBase (без проксирования через бэкенд-сервер и т.п.) прямо из JS на стороне клиента.
Я пытаюсь найти способ автоматически создавать учётную запись в PocketBase, когда пользователь входит в Discourse.
Моя первая попытка заключалась в том, чтобы JS-плагин делал запрос к определённому пути на сервере, передавая куки аутентификации Discourse. Затем этот путь должен был проксироваться через nginx к сервису («прокси входа»), который мог бы декодировать куки аутентификации и определять пользователя. После получения подтверждённых данных о пользователе прокси входа мог бы сделать специальный запрос в PocketBase, получить оттуда токен аутентификации PocketBase и вернуть его клиенту. Затем клиентский JS мог бы использовать этот токен для последующих запросов напрямую к PocketBase.
Однако у меня возникли трудности с декодированием куки аутентификации Discourse (я предполагаю, что правильная кука — _t, но не вижу простого способа извлечь данные о пользователе, к тому же меня беспокоит, что структура этих данных может измениться).
Есть ли более разумный способ безопасно получить адрес электронной почты авторизованного пользователя? Я считаю, что это не должно происходить на стороне клиента, и по очевидным причинам предпочёл бы реализовать это на стороне сервера.