Я прочитал тему Group trust level, где сказано:
А также в более старой теме Should losing group membership unlock trust level?
Описанная ситуация в значительной степени совпадает с моим опытом:
Но вот что я обнаружил в собственном тестовом экземпляре Discourse…
При всех настройках Уровня доверия по умолчанию у меня есть учётная запись U с уровнем доверия 1 (TL1) и группа tl3, предоставляющая Trust_Level_3.
- Исходные условия
- Уровень доверия:
1: базовый пользовательРазблокирован - Автоматические группы:
trust_level_0,trust_level_1 - Пользовательские группы: Нет
- Уровень доверия:
- Добавление U в tl3
- Уровень доверия:
3: РегулярныйРазблокирован - Автоматические группы:
trust_level_0,trust_level_1,trust_level_2,trust_level_3 - Пользовательские группы: tl3
- Уровень доверия:
- Удаление U из tl3
- Уровень доверия:
2: УчастникРазблокирован - Автоматические группы:
trust_level_0,trust_level_1,trust_level_2,trust_level_3 - Пользовательские группы: Нет
- ПРИМЕЧАНИЕ: Несмотря на уровень доверия 2, пользователь всё ещё состоит в автоматической группе
trust_level_3. Учитывая, что пользователь не может быть понижен до TL1 без заблокированного уровня доверия, ожидаемым результатом здесь должно быть немедленное исключение пользователя из автоматической группыtrust_level_2.
- Уровень доверия:
- Блокировка уровня доверия U
- Уровень доверия:
2: УчастникЗаблокирован - Автоматические группы:
trust_level_0,trust_level_1,trust_level_2,trust_level_3 - Пользовательские группы: Нет
- ПРИМЕЧАНИЕ: Несмотря на уровень доверия
2: Участник, пользователь всё ещё состоит в автоматической группеtrust_level_3.
- Уровень доверия:
- Разблокировка уровня доверия U
- Уровень доверия:
1: БазовыйРазблокирован - Автоматические группы:
trust_level_0,trust_level_1 - Пользовательские группы: Нет
- Уровень доверия:
Таким образом, при исключении пользователя из группы уровень доверия пересчитывается автоматически и мгновенно, но членство в автоматических группах не пересчитывается, если не происходит событие разблокировки уровня доверия пользователя.
Мое предположение заключается в том, что членство в автоматических группах вычисляется для всех пользователей в масштабе всей системы один раз в день, и в этот момент членство будет скорректировано. Однако кажется, что членство в автоматических группах должно либо активироваться при удалении из группы с эффектом на уровень доверия, либо активироваться немедленно при любом изменении уровня доверия, а не только при его повышении.
Таким образом, вызов backend API:
POST {{site}}/admin/users/{{userId}}/groups
обновляет членство в автоматических группах, а
DELETE {{site}}/admin/users/{{usedId}}/groups/{{groupId}}
— нет, что выглядит как ошибка, особенно если вы используете автоматические группы уровней доверия для контроля доступа.
И, для полноты картины, очевидно, что вызовы:
PUT {{site}}/admin/users/{{userId}}/trust_level
которые инициируются при ручном изменении уровня доверия пользователя в интерфейсе администратора, немедленно пересчитывают членство в автоматических группах, как и ожидалось.

