REGISTRATION-SERVICE является сервисом регистрации для golos.io и приложений.
Сервис предоставляет 4 типа стратегии регистрации, определяемые динамически:
smsFromUser- Пользователь отправляет СМС на указанный номер для верификации, самый безопасный, но наименее удобный для пользователя способ.smsToUser- Мы присылаем пользователю СМС с кодом, который он присылает нам, удобный и безопасный, но расточительный способ верификации.mail- Верификация по почте (не реализовано в данной версии).social- Верификация через соцсети (не реализовано в данной версии).
Также предоставляются способы динамического выбора стратегии для пользователя, определяемые на сервере, в том числе для A-B тестирования:
legacy- Старый способ регистрации, пользователь всегда получит стратегиюsmsFromUser.randomSmsStrategy- Способ регистрации когда пользователи получают стратегииsmsFromUserиsmsToUser, при этом выбор происходит поочередно - первый пользователь получает одну стратегию, второй другую, третий снова первую и т.д. В результате выходит распределение 50/50, но без выделения кагорт пользователей и какого-либо анализа при выборе.directStrategy- Жесткое указание стратегии для пользователя, которая будет использоваться им при регистрации. Дополнительно нужно отправить сопутствующие данные в формате{strategy: <string(name)>}, указывающие на имя стратегии.
При старте сервис выберет тип как legacy, однако это можно поменять в настройках env.
API JSON-RPC:
// Step api
getState: // Получить текущий стейт регистрации для пользователя.
user <string> // Имя пользователя.
firstStep: // Первый шаг регистрации.
captcha <string> // Ключ Google reCaptcha.
user <string> // Имя пользователя.
phone <string> // Номер телефона.
mail <string> // Адрес почты.
testingPass <string> // Пароль, отключающий проверку на капчу
// и помечающий телефон как тестовый.
verify: // Второй шаг регистрации, верификация аккаунта (кроме стратегии smsFromUser).
user <string> // Имя пользователя.
code <number/string> // СМС-код (для стратегий smsFromUser, smsToUser).
toBlockChain: // Третий шаг регистрации, запись в блокчейн.
user <string> // Имя пользователя.
owner <string> // Ключ аккаунта (главный ключ).
active <string> // Ключ аккаунта (активный ключ).
posting <string> // Ключ аккаунта (постинг ключ).
memo <string> // Ключ аккаунта (мемо ключ).
// Strategy-specific api
changePhone: // Смена номера телефона (для стратегий smsFromUser, smsToUser).
user <string> // Имя пользователя.
phone <string> // Номер телефона.
captcha <string> // Ключ Google reCaptcha (для стратегии smsToUser).
testingPass <string> // Пароль, отключающий проверку на капчу
resendSmsCode: // Переотравка кода подтверждения (для стратегии smsToUser).
user <string> // Имя пользователя.
subscribeOnSmsGet: // Подписка на факт получения СМС от юзера (для стратегии smsFromUser).
user <string> // Имя пользователя.
phone <string> // Номер телефона.
// Sms receiver api
incomingSms: // Обработка входящей смс от пользователя
phone <string> // Номер телефона
recentSmsList: // Обработка всех ранее полученных смс (для проверки на случай ошибок)
list: <Array<Object>> // Массив объектов смс
phone <string> // Номер телефона
// Control api
getStrategyChoicer: // Возвращает способ выбора стратегии для регистрации и сопутствующие данные
<empty>
setStrategyChoicer: // Устанавливает способ выбора стратегии для регистрации
choicer: <string>('legacy') // Тип способа выбора стратегии, детально смотри в начале документации
[
randomSmsStrategy // Поочередно выбирается 'smsFromUser' и 'smsToUser' стратегия
| directStrategy // Жестко устанавливается указанная в data стратегия
| legacy // Устанавливается стратегия 'smsFromUser'
]
data: <null|Object>(null) // Сопутствующие данные для способа выбора стратегии
enableRegistration: // Разрешает регистрацию для пользователей
<empty>
disableRegistration: // Запрещает регистрацию для пользователей
<empty>
isRegistrationEnabled: // Проверяет разрешена ли регистрация для пользователей
<empty>
deleteAccount: // Удаление аккаунта
targetUser <string> // Пользователь для удаления
testingPass <string> // Пароль системы тестирования для удаления тестовых аккаунтов
Возможные переменные окружения ENV:
-
GLS_DAY_START- время начала нового дня в часах относительно UTC.
Дефолтное значение -3(день начинается в 00:00 по Москве) -
GLS_MONGO_CONNECT- строка подключения к базе MongoDB.
Дефолтное значение -mongodb://mongo/admin -
GLS_METRICS_HOST(обязательно) - адрес хоста для метрик StatsD.
Дефолтное значение при запуске без докера -127.0.0.1 -
GLS_METRICS_PORT(обязательно) - адрес порта для метрик StatsD.
Дефолтное значение при запуске без докера -8125 -
GLS_CONNECT_HOST(обязательно) - адрес, который будет использован для входящих подключений связи микросервисов.
Дефолтное значение -0.0.0.0 -
GLS_CONNECT_PORT(обязательно) - адрес порта, который будет использован для входящих подключений связи микросервисов.
Дефолтное значение -3000 -
GLS_SMS_VERIFY_EXPIRATION_HOURS- время, за которое необходимо пройти верификацию по СМС, иначе аккаунт будет отправлен в архив и имя вместе с номером телефона будут освобождены.
Дефолтное значение -1(измеряется в часах) -
GLS_GOOGLE_CAPTCHA_SECRET(обязательно) - секретный ключ Google для reCaptcha. -
GLS_SMS_RESEND_CODE_TIMEOUT- время, через которое можно повторно запросить отправку СМС-кода.
Дефолтное значение -45000(измеряется в миллисекундах) -
GLS_SMS_RESEND_CODE_MAX- максимальное количество попыток переотправки смс кода. Дефолтное значение -3 -
GLS_REGISTRAR_KEY(обязательно) - активный ключ регистратора аккаунтов. -
GLS_REGISTRAR_ACCOUNT(обязательно) - имя аккаунта регистратора аккаунтов. -
GLS_ACCOUNT_DELEGATION_FEE- количество длелегируемой силы голоса при реристрации.
Дефолтное значение -2.7 -
GLS_BALANCE_CHECK_INTERVAL- интервал проверки на остаточный баланс на счету регистратора.
Дефолтное значение -10000(10 секунд) -
GLS_MIN_REGISTRATIONS_BEFORE_BANKRUPT- минимальное количество пользователей, которые должны суметь зарегистрироваться на сайте если баланса станет не достаточно для продолжения регистраций.
Дефолтное значение -5 -
GLS_FACADE_CONNECT(обязательно) - адрес подключения к микросервису фасаду. -
GLS_SMS_CONNECT(обязательно) - адрес подключения к микросервису sms-сообщений. -
GLS_IS_REG_ENABLED_ON_START- флаг управления разрешением регистрации при запуске сервиса, необходимо выставить вfalseесли после запуска сервиса он должен запрещать регистрацию и ждать явного вызова метода управления, который её включит.
Дефолтное значение -true, после запуска сервис сразу разрешает пользователям регистрацию. -
GLS_DEFAULT_STRATEGY_CHOICER- указывает на стартовый способ выбора стратегии регистрации, о возможных способах смотри в начале документации.
Дефолтное значение -legacy -
GLS_DEFAULT_STRATEGY_CHOICER_DATA- дефолтные данные для параметра выше. Пустое значение будет воспринято какnull, любое другое будет распарсено какJSON.
Дефолтное значение - `` (распарсится какnull). -
GLS_CAPTCHA_ON- флаг указывающий на необходимость фильтрации входящих запросов на регистрацию через капчу.
Дефолтное значение -true -
GLS_MAIL_CONNECT(обязательно) - адрес подключения к микросервису рассылки почты. -
GLS_MAIL_FINISH_TEMPLATE_RU(обязательно) - идентификатор шаблона письма регистрации с русской локалью. -
GLS_MAIL_FINISH_TEMPLATE_BY(обязательно) - идентификатор шаблона письма регистрации с беларусской локалью. -
GLS_MAIL_FINISH_TEMPLATE_EN(обязательно) - идентификатор шаблона письма регистрации с английской локалью. -
GLS_TESTING_PASS- пароль для запросов, убирающий проверку капчи и упрощающий механизм верификации. -
GLS_MONGO_EXTERNAL_HOST- адрес подключения к базе данных из внешних сервисов (например - метрики). Дефолтное значение при запуске в докере -127.0.0.1 -
GLS_MONGO_EXTERNAL_PORT- порт подключения к базе данных из внешних сервисов (например - метрики). Дефолтное значение при запуске в докере -27017
Для запуска сервиса достаточно вызвать команду docker-compose up в корне проекта, предварительно указав
необходимые ENV переменные.