Как удалять учетные записи пользователей через API без блокировки IP

Мы интегрировали Discourse с другим приложением, и управление пользователями осуществляется через Keycloak. Когда пользователь удаляет свой аккаунт в другом приложении, мы также удаляем его через API в Discourse.
Это работает нормально, но IP-адрес пользователя автоматически блокируется в Discourse, поэтому невозможно войти в систему под другим пользователем с того же IP.
Можно ли отключить эту блокировку IP? Или сделать так, чтобы она автоматически снималась через некоторое время?

Да. Вам нужно ин-чекнуть то, что блокирует IP. См. Реверс-инжиниринг API Discourse и посмотрите, что произойдет, если сделать это через интерфейс пользователя.

Согласно документации API для удаления пользователя, блокировка IP-адреса является одним из параметров, передаваемых в теле запроса.

Таким образом, в коде, где выполняется запрос, вы должны иметь возможность передать JSON в теле запроса, включающий "block_ip": false.

Например:

{
  "delete_posts": false,
  "block_email": false,
  "block_urls": false,
  "block_ip": false
}

Я не уверен, что правильно понимаю это. Вы имеете в виду, что мне нужно разблокировать IP через API после удаления учётной записи?

На самом деле я надеялся найти какой-то переключатель в конфигурации Discourse.

А, понятно. Спасибо, попробую.

Привет!
Удалось ли вам получить ответ здесь? У меня параметр “block_ip”: false не работает в теле запроса к API. У вас это сработало, или вам пришлось отправить отдельный запрос, проведя реверс-инжиниринг API Discourse?

У меня это работает.
Вот наше тело запроса:

{
  delete_posts: false,
  block_email: false,
  block_urls: false,
  block_ip: false,
}

Интересно, была ли проблема в том, что в теле запроса использовалось именно "block_ip": false, а не строка JSON-объекта. Я больше не могу редактировать свой пост, но пометил его, чтобы ваш JSON был добавлен в качестве примера, что, надеюсь, сделает отмеченное решение более понятным.

Спасибо за ваш ответ.
У нас это настроено для тела запроса JSON {block_email: false} (в нашем случае это block_email), но, похоже, это не действует в API удаления пользователя. Нам пришлось отправить отдельный запрос для удаления адреса электронной почты из списка заблокированных электронных адресов (Screened Emails).

В зависимости от того, как вы формируете JSON-строку (вручную или с помощью библиотеки), возможно, вам придется попробовать использовать одинарные кавычки, двойные кавычки или вообще не использовать кавычки. Кроме того, у меня нет идей — API Discourse обычно делает именно то, что обещает.

Хорошо, я опубликую это здесь для всех, кто столкнется с аналогичной ситуацией при использовании API удаления пользователей.
block_ip: False надёжно предотвращает добавление IP-адреса в список заблокированных IP.
block_email: False должно предотвращать добавление email в список заблокированных email, однако некоторые пограничные случаи (например, пользователи с флагом спама или новые пользователи с уровнем доверия 0) всё ещё могут запускать проверку email даже если block_email установлено в False.
Для разблокировки email из Screened Emails потребуется дополнительный запрос.