Первое предложение — только отслеживание приглашений? Да, конечно. Имя пользователя без токена не должно давать уровень TL1, так как имена пользователей являются общедоступной информацией.
Могу я предложить, чтобы эти ссылки имели вид https://meta.discourse.org/signup?u=codinghorror&token=3ojk6WTY, чтобы соответствовать первой части
не подумал об этом. Будет непросто это документировать, но именно так должны взаимодействовать настройки.
Да, в копировании Discord здесь нет никаких минусов. Мне кажется, что у нас раньше были пригласительные ссылки только по URL (без необходимости указывать email), но их пришлось убрать из-за проблем с безопасностью. Помнишь об этом, @techapj?
Да, пункт «не требуется электронная почта» стал ошибкой в плане безопасности — такие приглашения всё же должны требовать проверки электронной почты (или входа через социальные сети с проверкой почты), поскольку они не попадают напрямую в почтовые ящики пользователей.
Если цель — сделать это максимально удобным для распространения, то почему бы не подойти к этому как к реферальному коду? Что-то, что легко можно передать в презентации, в виде простого текста или по сарафанному радио. Запросные строки запутаны и ненадежны, тогда как domainname.tld/invite/samgdc2020 запоминается и менее рискованна — именно то, что люди могут быстро записать и без проблем передать дальше.
В качестве меры предосторожности я бы очень хотел видеть какой-то механизм истечения срока действия кода в качестве дополнительного уровня защиты.
Ограничение по времени или количеству использований было бы разумным пределом, который уже реализован в другом программном обеспечении для подобных задач. И обычно это определяется пользователем.
Да, эта функция всё ещё доступна, но реализована в виде плагина:
URL будет иметь следующий вид: http://discourse.example.com/invite-token/redeem/TOKEN?username=USERNAME&email=EMAIL&name=NAME&topic=TOPICID
Минимально необходимый URL должен быть таким: http://discourse.example.com/invite-token/redeem/TOKEN?email=EMAIL
Проблема с безопасностью заключалась в том, что мы не проверяли существование пользователя с указанным адресом электронной почты, но теперь в плагине такая проверка выполняется.
Думаю, имя пользователя могло бы по умолчанию быть включено в токен, а при необходимости перезаписываться добавлением явного параметра пользователя?
Что касается token, я бы предпочел использовать code, так как это понятнее для нетехнических людей.
Полагаю, что нет. Хотя токены, генерируемые плагином, не содержат адреса электронной почты, их можно использовать только после добавления адреса, тогда как здесь идея заключается именно в устранении этого требования, верно?
Истекают ли эти коды приглашения когда-либо или они действительны бесконечно? Может быть, стоит установить здесь жёсткий лимит как настройку сайта, по крайней мере, на данный момент?
Мне нужен был бы персонализированный ссылочный адрес (без указания адреса электронной почты), который организации могли бы рассылать своим клиентам. При регистрации эти пользователи автоматически присоединялись бы к определённой группе и попадали в стартовую тему. Причина в том, что медицинские организации, с которыми я работаю, не могут или не хотят делиться своим списком адресов электронной почты, но готовы отправлять письма своим членам (от их имени).
Я думаю, что ваша просьба здесь и предложение функции от @nathank тесно связаны.
На данный момент у нас есть один глобальный код приглашения, у которого нет срока действия; чтобы его истечь, администратор может просто обнулить код или изменить его.
Здесь предлагается более сложный механизм кодов приглашения, интегрированный в глобальную систему приглашений.
Ключевые функции, которые запрашиваются:
Новая ссылка для приглашения
многократное использование N раз
(опционально) автоматическое добавление пользователя в группу
Сколько человек могут зарегистрироваться по этой ссылке?
Как долго должна работать эта ссылка для приглашения? По умолчанию — 1 месяц.
После заполнения этих полей вы получите ссылку для приглашения, которая работает ограниченное время, интегрируется с остальной системой приглашений, позволяет добавлять людей в группы и так далее.
С внедрением этой функции мы сможем полностью убрать глобальную функцию «код приглашения».
Как я понимаю, токены для массовой отправки приглашений выдаются по одному на каждое приглашение. Это сильно отличается от того, чего вы здесь хотите.
Я обсудю это с @techAPJ. Мне кажется, что эффективное привлечение новых пользователей на форум сейчас очень актуально и важно. Мы намерены в приоритетном порядке заняться улучшением этой функциональности.
Электронная почта требуется в момент принятия приглашения, но не при генерации токена приглашения.
Вы можете передать эту ссылку конечному пользователю и попросить его заменить EMAIL на свой адрес электронной почты: http://discourse.example.com/invite-token/redeem/TOKEN?email=EMAIL.
Согласен, это именно то, что я тоже хотел бы увидеть реализованным.
Чтобы любой пользователь, имеющий разрешение на приглашение пользователей, мог создать универсальную ссылку-приглашение, которая позволит новому пользователю присоединиться и добавит его в список приглашённых пользователя, отправившего приглашение.
Приглашение в группы с ограничениями по времени или количеству участников было бы приятно, но для меня это не является приоритетом.
При попытке перейти по этой ссылке я получаю сообщение: «Упс! Страница не существует или является приватной».
Страница amazing.forum.com/signup открывает модальное окно регистрации, но при переходе по ссылке amazing.forum.com/signup?code=fantastic значение, похоже, не передаётся в модальное окно (я также пробовал параметр invite_code=fantastic).
Кроме того, когда это будет работать, было бы неплохо добавить эту информацию в исходный пост.