Вход под пользователем
Администратор может посмотреть сайт глазами конкретного пользователя — чтобы воспроизвести жалобу, не выпрашивая пароль. Кнопка «Войти под этим пользователем» появляется в списке пользователей админки у тех, кому доступно право users.impersonate (по умолчанию — у роли admin).
Это не подмена куки: открывается отдельная сессия пользователя, в которой записано, кто её открыл (auth_sessions.impersonator_id) и куда возвращаться (parent_session_id). Поэтому вход под пользователем виден в журнале и отзывается, как любая другая сессия.
Как это работает
Собственная сессия администратора не закрывается и не затирается — она ждёт во второй куке (
jc_auth_parent). Возврат кнопкой «Вернуться в свою учётную запись» на плашке, которая видна на каждой странице.Срок — 1 час, и он не продлевается, в отличие от обычной сессии. Закрыли вкладку и забыли — через час сессия мертва, а следующий запрос автоматически возвращает администратора в его собственную учётную запись.
Нельзя войти под тем, чья роль не ниже вашей, и под самим собой.
Выход (
/logout) во время просмотра означает именно выход: закрываются обе сессии.
Чего пользователь не увидит
Присутствие администратора пользователю не показывается и следов в его интерфейсе не оставляет:
его
lastdate,sestime,movingsи место на сайте не обновляются — иначе он «висел бы онлайн», когда его нет;адрес администратора не попадает в историю IP пользователя;
на экране «Мои устройства» такие сессии не показываются (в админке — наоборот, видны).
Известное ограничение: отметки «прочитано» — темы форума, личные сообщения, счётчики нового — администратор своим просмотром собьёт. Сделать просмотр read-only нельзя: тогда им нельзя было бы воспроизвести половину жалоб.
Что запрещено во время просмотра
Список прав задаётся в config/autoload/auth.local.php (auth.impersonation.denied_permissions); по умолчанию запрещены вход в админку, изменение настроек и ролей, а также повторный вход под пользователем. Запрет сильнее любых ролей: он перевешивает и права пользователя, и права самого администратора.
Журнал
Начало и конец пишутся в журнал входов как impersonation.start и impersonation.stop, а каждый изменяющий запрос (POST и остальные небезопасные методы) — как impersonation.action с методом и адресом страницы.
Писать сообщения от лица пользователя технически можно, и это не запрещено: без этого не отладить часть жалоб. Аргумент, почему так допустимо, — администратор и так имеет доступ к базе и может вписать любое сообщение напрямую; вход под пользователем не добавляет ему возможностей, зато добавляет журнал.
Настройки
Последнее обновление
Это было полезно?