Опциональный глобальный код приглашения

Первое предложение — только отслеживание приглашений? Да, конечно. Имя пользователя без токена не должно давать уровень TL1, так как имена пользователей являются общедоступной информацией.

image

Могу я предложить, чтобы эти ссылки имели вид https://meta.discourse.org/signup?u=codinghorror&token=3ojk6WTY, чтобы соответствовать первой части :slight_smile:

:+1: не подумал об этом. Будет непросто это документировать, но именно так должны взаимодействовать настройки.

8 лайков

Да, в копировании Discord здесь нет никаких минусов. Мне кажется, что у нас раньше были пригласительные ссылки только по URL (без необходимости указывать email), но их пришлось убрать из-за проблем с безопасностью. Помнишь об этом, @techapj? :thinking:

8 лайков

Да, пункт «не требуется электронная почта» стал ошибкой в плане безопасности — такие приглашения всё же должны требовать проверки электронной почты (или входа через социальные сети с проверкой почты), поскольку они не попадают напрямую в почтовые ящики пользователей.

5 лайков

Если цель — сделать это максимально удобным для распространения, то почему бы не подойти к этому как к реферальному коду? Что-то, что легко можно передать в презентации, в виде простого текста или по сарафанному радио. Запросные строки запутаны и ненадежны, тогда как domainname.tld/invite/samgdc2020 запоминается и менее рискованна — именно то, что люди могут быстро записать и без проблем передать дальше.

В качестве меры предосторожности я бы очень хотел видеть какой-то механизм истечения срока действия кода в качестве дополнительного уровня защиты.

7 лайков

Ограничение по времени или количеству использований было бы разумным пределом, который уже реализован в другом программном обеспечении для подобных задач. И обычно это определяется пользователем.

11 лайков

Действительно, но, судя по PR, это единый код для всего сайта.

1 лайк

Да, эта функция всё ещё доступна, но реализована в виде плагина:

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

Проблема с безопасностью заключалась в том, что мы не проверяли существование пользователя с указанным адресом электронной почты, но теперь в плагине такая проверка выполняется.

11 лайков

Думаю, имя пользователя могло бы по умолчанию быть включено в токен, а при необходимости перезаписываться добавлением явного параметра пользователя?

Что касается token, я бы предпочел использовать code, так как это понятнее для нетехнических людей.

Полагаю, что нет. Хотя токены, генерируемые плагином, не содержат адреса электронной почты, их можно использовать только после добавления адреса, тогда как здесь идея заключается именно в устранении этого требования, верно?

А вопрос безопасности можно решить:

Было бы здорово иметь такую возможность. :slight_smile:

4 лайка

Истекают ли эти коды приглашения когда-либо или они действительны бесконечно? Может быть, стоит установить здесь жёсткий лимит как настройку сайта, по крайней мере, на данный момент?

7 лайков

Разве для работы GitHub - discourse/discourse-invite-tokens: Discourse Invite Tokens · GitHub всё ещё не требуется адрес электронной почты? Возможно, я неправильно понимаю, как это работает.

Мне нужен был бы персонализированный ссылочный адрес (без указания адреса электронной почты), который организации могли бы рассылать своим клиентам. При регистрации эти пользователи автоматически присоединялись бы к определённой группе и попадали в стартовую тему. Причина в том, что медицинские организации, с которыми я работаю, не могут или не хотят делиться своим списком адресов электронной почты, но готовы отправлять письма своим членам (от их имени).

5 лайков

Я думаю, что ваша просьба здесь и предложение функции от @nathank тесно связаны.

На данный момент у нас есть один глобальный код приглашения, у которого нет срока действия; чтобы его истечь, администратор может просто обнулить код или изменить его.

Здесь предлагается более сложный механизм кодов приглашения, интегрированный в глобальную систему приглашений.

Ключевые функции, которые запрашиваются:

  • Новая ссылка для приглашения

    • многократное использование N раз

    • (опционально) автоматическое добавление пользователя в группу

    • истекает через M дней

Для меня это похоже на расширение этого диалога:

Возможно, добавить туда вкладку?

[массовое приглашение]

  • Убрать поле для email

  • Убрать кнопку «Отправить приглашение»

  • Добавить:

    Сколько человек могут зарегистрироваться по этой ссылке?

    Как долго должна работать эта ссылка для приглашения? По умолчанию — 1 месяц.

После заполнения этих полей вы получите ссылку для приглашения, которая работает ограниченное время, интегрируется с остальной системой приглашений, позволяет добавлять людей в группы и так далее.

С внедрением этой функции мы сможем полностью убрать глобальную функцию «код приглашения».

17 лайков

Точно в яблочко — это идеально решит задачу.

Также было бы здорово добавить тему/пост-вводную, как в случае с массовой рассылкой приглашений через CSV. Это тоже обеспечит единообразие.

7 лайков

Если это актуально в свете текущих глобальных событий, я поддерживаю приоритетность этой работы, но решение за вами, @sam.

10 лайков

Нет, для работы invite-tokens адрес электронной почты не требуется. См. Generating lots of Invite Tokens, чтобы понять, как это работает.

8 лайков

Я это прочитал, но всё ещё запутался.

Это очень сильно намекает, что вам нужен адрес электронной почты пользователя. Или я просто туплю?

4 лайка

Как я понимаю, токены для массовой отправки приглашений выдаются по одному на каждое приглашение. Это сильно отличается от того, чего вы здесь хотите.

Я обсудю это с @techAPJ. Мне кажется, что эффективное привлечение новых пользователей на форум сейчас очень актуально и важно. Мы намерены в приоритетном порядке заняться улучшением этой функциональности.

9 лайков

Электронная почта требуется в момент принятия приглашения, но не при генерации токена приглашения.

Вы можете передать эту ссылку конечному пользователю и попросить его заменить EMAIL на свой адрес электронной почты: http://discourse.example.com/invite-token/redeem/TOKEN?email=EMAIL.

Надеюсь, это прояснит путаницу.

7 лайков

Мне очень нравится ваше предложенное решение в сообщении 31 для @sam — расширение функциональности кодов приглашения.

5 лайков

Согласен, это именно то, что я тоже хотел бы увидеть реализованным.

Чтобы любой пользователь, имеющий разрешение на приглашение пользователей, мог создать универсальную ссылку-приглашение, которая позволит новому пользователю присоединиться и добавит его в список приглашённых пользователя, отправившего приглашение.

Приглашение в группы с ограничениями по времени или количеству участников было бы приятно, но для меня это не является приоритетом.

3 лайка

При попытке перейти по этой ссылке я получаю сообщение: «Упс! Страница не существует или является приватной».

Страница amazing.forum.com/signup открывает модальное окно регистрации, но при переходе по ссылке amazing.forum.com/signup?code=fantastic значение, похоже, не передаётся в модальное окно (я также пробовал параметр invite_code=fantastic).

Кроме того, когда это будет работать, было бы неплохо добавить эту информацию в исходный пост.

2 лайка