Как отключить доступ без отправки письма пользователю

Привет.

Мой форум работает на версии 2.7.0.beta6.

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

Я сначала пробовал деактивировать тестовый аккаунт перед его приостановкой, но письмо всё равно отправляется.

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

Есть ли способ отключить доступ к Discourse, не отправляя уведомление пользователю?

— Райан

Вот код, который выполнит это в консоли Rails:

./launcher enter app 
rails c
username = "user-to-suspend-username"
admin_username = "admin-username"
reason = "причина приостановки"
till = Time.at(33174889200)
u = User.find_by_username(username)
puts "не удалось найти пользователя с именем #{username}" unless u
if u and !u.suspended?
  u.suspended_till = till
  u.suspended_at = DateTime.now

  User.transaction do
    u.save!
    admin = User.find_by_username(admin_username)
    StaffActionLogger.new(admin).log_user_suspend(
      u,
      reason
    )
  end
  u.logged_out
end

Если человек больше не является сотрудником, как он всё ещё может получить доступ к своему корпоративному почтовому аккаунту? :thinking:

Вы всегда можете сначала отредактировать пользователя, изменив его email на no@email.some.random.nonexistent.domain,

а затем приостановить его аккаунт.

Используются личные адреса электронной почты.

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

Разве раньше отправка по электронной почте была необязательной?

Вся документация создаёт такое впечатление! Но письмо отправляется даже в том случае, если вы оставите поле сообщения пустым.

Отправит письмо с этим сообщением, если оно указано

При желании укажите дополнительную информацию о приостановке — она будет отправлена пользователю по электронной почте

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

Я создал pull request, чтобы привести поведение в соответствие с документацией:

Это исправление уже принято @eviltrout :tada: