Close-Encounters-Corps/EDMC-Triumvirate

[Предложение функции] Перекрестная аутентификация пользователей плагина и сайта

Opened this issue · 2 comments

Какое решение Вы хотите?
Требуется перекрестная аутентификация пользователей плагина и сайта. Сначала пользователь регистрируется на сайте, в дискорде, получает от нас уникальный ключ для входа на сайт, затем устанавливает и использует плагин. Плагин должен проверять наличие верифицированной записи и, либо демонстрировать ему задачи БГС и остальные планируемые функции, либо работать в урезанном режиме.

Дополнительные материалы

https://user.frontierstore.net/developer/docs

https://github.com/Athanasius/fd-api/blob/master/docs/README.md
и Иг, если нужен ключ, запрашивай, у нас есть авторизованный

пусть будет как в Inara, только один токен доступа

токены генерируются достаточно секьюрно, через жавовский ThreadLocalRandom API

а вот пароли учёток секьюрны прямо офигеть как, там Argon2 https://github.com/P-H-C/phc-winner-argon2

Ссылка на обсуждение модели ключевой авторизации в админке канонов (только Славе) https://discord.com/channels/146714487695605760/282234887933526017/648591878773669905

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

существующих сейчас пилотов можно, думаю, скриптами экспортировать из наших таблиц, и по ним насоздавать учётки. отправить пароли ботом

https://github.com/chrisbruford/knights-website

https://github.com/FuelRats/fuelrats.com

https://github.com/IronicPickle/elite-community-website

https://github.com/alterNERDtive/elite-scripts

Сначала пользователь регистрируется на сайте, в дискорде, получает от нас уникальный ключ для входа на сайт

Может, он сразу будет регистрироваться через дискорд?

Я вижу это так:

  1. Пользователь открывает дискорд-бота, просит зарегистрировать его с таким-то логином.
  2. Бот отправляет заявку на сайт с: указанным логином, ID дискорда, и со сгенерированным паролем.
  3. При успешном ответе бот отвечает пользователю сообщением с паролем.
  4. Пользователь заходит на сайт под логином и паролем, ему даётся окно с просьбой поменять пароль. После смены пароля ему уже даётся доступ к сайту и, в частности, к странице для привязки аккаунта Frontier.
  5. После авторизации через Frontier мы запрашиваем из Companion API фронтиров никнейм командира, и приписываем его к пользователю.
  6. Вот теперь пользователь может сгенерировать на сайте токен для Triumvirate и начать пользоваться плагином.

Пара нюансов:

  • Регистрация должна быть доступна только через бота.
  • Чтобы никто другой не мог "представиться" ботом, бот должен использовать приватный токен, который можно будет сгенерировать в админке.

Решили сделать следующим образом:

  1. Пользователь заходит на сайт.
  2. Регистрируется через Discord ИЛИ через Frontier.
  3. Создаётся неподтверждённая учётная запись, к которой можно прикрепить другую оставшуюся учётку.
  4. Администратор подтверждает учётную запись.
  5. Теперь пользователь имеет доступ к Triumvirate и его токену.

Завтра найду время -- начну реализовывать это на бэкенде.