Add 'stop impersonating' link to user avatar dropdown when impersonating

Мне очень нравится эта идея, @John_Lehmann!

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

Еще один недостаток текущего процесса заключается в том, что нужно кликнуть на аватар пользователя. Я притворялся пользователем, у которого было 5 новых уведомлений. Когда я нажал на его профиль, чтобы выйти из его аккаунта, эти уведомления были помечены как прочитанные, и значок (5) с количеством новых уведомлений больше не отображался. Как грустно для него, когда он вернется! Надеюсь, он получил какие-то email-уведомления, которые вернут его обратно!

Другое сообщество, которое я создал и сейчас управляю им, находится на платформе Higher Logic. Не могу передать, насколько мне больше нравится использовать Discourse, чем Higher Logic. Но, теперь, когда я это сказал, отмечу, что мне нравится их метод имитации пользователей…

Наверху экрана есть панель, которая постоянно визуально напоминает о том, что вы притворяетесь пользователем, и кнопка «ОСТАНОВИТЬ», а также маленькая отдельная кнопка внизу экрана, позволяющая вам «ОСТАНОВИТЬ».

Я не думаю, что им нужны обе кнопки. Панели наверху экрана достаточно.

Мне очень нравится предложение @John_Lehmann о более яркой и заметной панели, которая выделяется, чтобы вы не забыли выйти из аккаунта пользователя перед публикацией и выполнением других действий.

image

Это не критично ни в коем случае.

Я просто зашел на meta, чтобы узнать, есть ли для этого плагин или что-то подобное.

12 лайков

Как раз сегодня это понадобилось. Я использую функцию имперсонации, чтобы публиковать правила категорий или другие закреплённые темы и ответы в них от имени аккаунта @system. Сейчас я сначала публикую их от своего имени, а затем передаю право собственности на @system, но что, если кто-то настроил отслеживание этой темы? Тогда он увидит, что это сделал я. Я не обязательно пытаюсь остаться анонимным при публикации таких сообщений, просто не хочу, чтобы они были под моим именем. Можно создать альтернативный аккаунт, цель которого — публиковать такие сообщения, но тогда мне пришлось бы каждый раз входить через приватное окно, что плохо сказывается на удобстве использования.

2 лайка

Также я хотел бы иметь возможность вернуться к своей учётной записи после завершения имперсонации. Это возможно во всех реализациях, которые я использовал для этой функции в WordPress.

3 лайка

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

+1 к идее @John_Lehmann.

4 лайка

Мне интересно, не стоит ли полностью переосмыслить эту функцию.

Функция «Имитация» всегда была очень острым инструментом, реализованным скорее как костыль.

Реализация без костылей могла бы быть значительно менее пугающей и гораздо проще обосновывалась бы как стандартная функция Discourse.

  • При имитации пользователя у вас есть только режим «только для чтения» (если не включена какая-то специальная скрытая настройка сайта).
  • Баннер вверху, как предложил @John_Lehmann.
  • Больше формальностей при имитации, например: с большой силой приходит большая ответственность.

В целом эта функция очень полезна для отладки, но действия от имени другого человека крайне опасны.

Мне интересно, не имеет ли смысл для начала, @codinghorror, сделать текущую функцию «Имитация» функцией, отключенной по умолчанию на сайтах Discourse, и требовать изменения скрытой настройки сайта для её включения? Не уверен?

12 лайков

@sam, согласен, извините за упоминание, но я уже много лет периодически поднимаю эту тему, и для некоторых это действительно важно. Функция «Имперсонация» — это та самая особенность, которая делает конфиденциальность пользователей серьёзной проблемой в Discourse, особенно при использовании платформы для внутренней рабочей коммуникации и сотрудничества.

Раньше мы уже использовали её, и сейчас возвращаемся к развертыванию экземпляра Discourse для нашего профсоюза. Не для всех членов, а только для избранных должностных лиц. В то время, когда я администрировал старый экземпляр, я был обычным представителем, как и большинство других. Сейчас я занимаю руководящую должность в организации, поэтому моя роль не противоречит возможностям администратора Discourse просматривать все материалы во всех категориях. Но тогда это было проблемой…

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

Другой ГЛАВНЫЙ concern заключался в том, что активный представитель, который также является администратором Discourse (а не, например, наёмный IT-специалист), мог бы просто имперсонировать другого пользователя, читать личные сообщения и вмешиваться в личные настройки и данные кого-либо.

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

Можно назвать это что-то вроде «Discourse Teams», возможно, «Discourse Professional». Что-то, что предназначено не столько как интернет-форум, сколько как бизнес-платформа для профессионального сотрудничества и коммуникации. Discourse мог бы БЛИСТАТЬ в этой роли, если бы возможность администратора видеть всё можно было ограничить, сократить или вовсе устранить (в первую очередь это касается функции имперсонации и чтения сообщений через вкладку профиля/сообщений).

6 лайков

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

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

Возможно, эта функция уже существует и отделена от функции имитации. Я полагаю, что помимо этого, я не уверен, для чего ещё люди используют имитацию.

Подойдёт ли эта функция для большинства случаев?

7 лайков

По этому вопросу есть много материалов на The Impersonated user should be notified that they are being Impersonated. Я всё ещё согласен с выводами, к которым пришли там. Если кратко: это тупик, администраторы могут всё, и если вы не доверяете администраторам, не назначайте их.

Возможно, стоит рассмотреть другой подход — добавить определённые препятствия для имперсонации:

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

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

3 лайка

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

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

3 лайка

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

10 лайков

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

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

3 лайка

Для справки: здесь предлагалась имитация уровня доверия:

5 лайков

Думаю, это нормально. Я всегда рассматривал это как функцию отладки для разработчиков, а не как реальную «функцию».

6 лайков

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

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

Лично я считаю, что это была бы очень полезная функция при притворстве.

2 лайка

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

Если вы хотите использовать это, включите скрытую настройку сайта experimental_impersonation и сообщайте о любых проблемах здесь. :folded_hands:

24 лайка

Спасибо, что раскрыли то, чего хотели древние! :hugs: :grinning_face_with_smiling_eyes:

9 лайков

Круто! Я буду использовать это регулярно.

3 лайка

Спасибо большое за это!

Как только это станет стабильным, можно будет представить impersonation_enabled_groups и пойти в обратном направлении: участвовать как обычный участник, а переходить в режим администратора только при необходимости… так называемый режим sudo… Это могло бы открыть возможности для смены персонажа по требованию… Например, ссылка Discourse Staff Alias ограничивает псевдо-имперсонацию одним псевдонимом команды, но при расширении возможностей имперсонации можно было бы менять персонаж в зависимости от различных критериев…

Например, участник @well-being.team мог бы публиковать сообщения от имени группового псевдонима, чтобы отвести личные обиды, автор мог бы писать как @narrator или @characterN, чтобы создать интерактивную историю, учитель мог бы имитировать ученика, чтобы понять его точку зрения… всё это в соответствии с настраиваемыми группами. :blush:

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

5 лайков

Я протестировал функцию experimental_impersonation, и она выглядит отлично! Она делает именно то, что обещает, и я рад, что мне не приходится проходить через лишние шаги: выходить из системы, а затем снова входить под своей учётной записью.

@moin указал в 🇩🇪 Fehler in der Deutschen Übersetzung? Hier melden! - #108 by Moin, что термины «impersonate» и «stop impersonating» плохо переводятся на немецкий язык. Трудно подобрать слова, которые точно передают весь смысл действия. Возможно, такая проблема существует и в других языках, но я это не проверял.

Интересно, не стоит ли нам (каламбур намерен) перейти к более простым формулировкам, например: Переключиться на @user_to_impersonate на странице администрирования пользователя, а затем Вернуться к @user_who_impersonated на кнопке для прекращения имперсонации. Это, вероятно, упростит перевод и сделает интерфейс понятнее для носителей других языков.

Сегодняшнее тестирование также выявило несколько других проблем:

  • Мне кажется, что для имперсонации нужно добавить модальное окно, аналогичное тем, что используются при удалении или слиянии. Это позволит отменить действие в случае случайного нажатия, а также проинформирует администратора о том, что будет выполнено, что действие будет зафиксировано в логах, и что можно будет вернуться без повторного входа в систему.
  • Факт имперсонации и возврата фиксируется в журнале действий персонала, но действия, выполненные во время имперсонации, не логируются. Учитывая, насколько эта функция подвержена злоупотреблениям — как случайным, так и умышленным —我觉得 логировать такие действия тоже имеет смысл.
  • Старая проблема всё ещё сохраняется: при имперсонации пользователя обновляется дата его последнего посещения в списке пользователей и в панели администратора, а также (предположительно) в плагине «Кто онлайн», если он установлен.
8 лайков

Мне нравится идея с использованием слова switch, потому что в финском языке трудно подобрать подходящий перевод. У нас есть одно-два слова для этого, но ни одно из них не звучит особенно хорошо. Слово switch подошло бы идеально.

1 лайк