Владелец группы не может добавлять участников в группу

Я почти уверен, что раньше это работало.

Ожидаемое поведение
Владельцы групп могут добавлять участников в группу с помощью модального окна «Добавить участников».

Фактическое поведение
Владельцы групп видят модальное окно «Добавить участников», но при попытке отправить форму получают ошибку 403 (доступ запрещён).

Наблюдается на двух отдельных сайтах.

Вот скриншот для вас:

5 лайков

Это всё ещё работает в версии 2.7.0.beta9 ( 4a2912233c )

3 лайка

Только что скачал последнюю версию кода с GitHub и повторно протестировал. Подтверждаю, что проблема существует. Шаги для воспроизведения:

  1. Создайте нового пользователя, который не является модератором или администратором.
  2. Создайте новую группу со следующими настройками: Разрешить пользователям свободно покидать группу=True, Разрешить пользователям отправлять запросы на вступление владельцам группы=True, Кто может видеть эту группу?=Все, Кто может видеть участников этой группы?=Все, Кто может упоминать эту группу через @?=Только модераторы и администраторы, Кто может отправлять сообщения этой группе?=Только модераторы и администраторы.
  3. Назначьте созданного пользователя владельцем группы.
  4. Войдя в систему как владелец группы, попробуйте добавить в группу другого пользователя.
5 лайков

Я предполагаю, что пользователь — TL2 или выше?

4 лайка

Мне удалось разобраться в этом.

Вот строка, которая вызывала проблемы: discourse/app/controllers/groups_controller.rb at e2e13a70f63605b92b4e521cc9f818061c1ccfb6 · discourse/discourse · GitHub

@Benjamin_D прав. Это проблема уровня доверия (TL).

Существует настройка сайта min_trust_level_to_allow_invite, которая была установлена на TL2, в то время как владелец группы имел TL1.

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

10 лайков

:thinking: Ты прав, я полагаю, он должен? Или, возможно, он не должен быть владельцем, если не соответствует критериям уровня доверия (TL)?

6 лайков

Это тоже имело бы смысл.

Или даже просто добавить сюда более конкретную ошибку.
Например, вместо того чтобы выбрасывать ошибку InvalidAccess с сообщением (en): You are not permitted to view the requested resource.

Создать ошибку InsufficientTrustLevel (возможно, как подкласс InvalidAccess) с сообщением (en): You do not have the required trust level to view the requeted resource. По крайней мере, тогда администраторы будут знать, что проблема в уровне доверия, а не в ошибке.

Несколько заметок о том, где это определено в коде:

Я могу сделать PR, если это кажется правильным решением.

7 лайков

Хотя я согласен, что здесь нужно улучшить сообщение об ошибке, на самом деле, считаю, что мы регрессировали.

Роль владельца группы — управлять членством в своей группе. Если он не может пригласить/добавить пользователей в свою группу, то функция работает наполовину…

@dan, можешь добавить это в свой список?

9 лайков

Отличная работа, все!

Возможно, я ошибаюсь, но мне кажется, что эта ситуация возникла в ходе нашей работы по улучшению системы приглашений. Мы унифицируем приглашения, чтобы все они использовали единую систему, и разделяем функции, касающиеся существующих пользователей. В последнее время мы изменили механизм так, что теперь существующие пользователи получают уведомления о темах через кнопку «Поделиться» в меню темы, отдельно от приглашения новых пользователей присоединиться к сайту и участвовать в обсуждении темы.

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

7 лайков

Это ограничение имеет смысл при приглашении по электронной почте в группы. Однако оно не имеет смысла при приглашении существующих пользователей. Я исправил эту проблему в:

Это временно решит проблему, но мы планируем полностью переработать этот раздел.

8 лайков

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.