mercs/api/auth

Авторизация пользователей

Центральный сервер (далее ЦС) выполняет задачи авторизации пользователей и работы с их данными. В базе ЦС имеются только таблица данных пользователей:

  • user_id
  • login
  • pwd
    • Хэш пароля пользователя
  • auth_key
    • Зашифрованная строка данных служащая для идентификации другими модулями (ключ аутентификации)
  • auth_key_expires
    • Срок истечения действия ключа аутентификации
  • email
  • player_data
    • Игровые параметры в виде сохранённого массива

При авторизации пользователя на ЦС, браузер получает куки, хрянящую только auth_key. Далее, в процессе работы при запросе к любому из модулей игры дополнительным параметром отправляется этот auth_key. Модуль, получив запрос от клиента, первым делом проверяет принадлежность auth_key согласно кэш-таблицы игроков:

  • user_id
  • auth_key
  • auth_key_expires
  • player_data

Возможны следующие ситуации:

  1. Ключ не найден
    • Делается внутренний запрос модуля к ЦС, содержащий указанный auth_key. В ответ должен прийти пакет либо содержащий данные пользователя (обновление), либо отказ.
  2. Ключ найден, но auth_key_expires уже истекло
    • Делается внутренний запрос модуля к ЦС, содержащий указанный auth_key. В ответ должен прийти пакет либо содержащий данные пользователя (обновление), либо отказ.
  3. Ключ найден и срок действия ещё не истёк
    • Ничего не требуется

Пример запроса на проверку/обновление данных игрока:

{
  command: {
    name: "auth",
    params: {
      id: "1234",
      key: "98hq29384fh34tg"
    }
  }
}

Пример удачного ответа проверки/обновления данных игрока:

{
  response: "ok",
  data: {
    user_id: "1234",
    auth_key_expires: "1132342522",
    player_data: "<b64-encoded-data>"
  }
}