> For the complete documentation index, see [llms.txt](https://docs.johncms.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.johncms.com/10.0/polzovateli/vkhod-pod-polzovatelem.md).

# Вход под пользователем

Администратор может посмотреть сайт глазами конкретного пользователя — чтобы воспроизвести жалобу, не выпрашивая пароль. Кнопка «Войти под этим пользователем» появляется в списке пользователей админки у тех, кому доступно право `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`); по умолчанию запрещены вход в админку, изменение настроек и ролей, а также повторный вход под пользователем. Запрет сильнее любых ролей: он перевешивает и права пользователя, и права самого администратора.

## Журнал

Начало и конец пишутся в [журнал входов](/10.0/polzovateli/zhurnal-vkhodov.md) как `impersonation.start` и `impersonation.stop`, а **каждый изменяющий запрос** (POST и остальные небезопасные методы) — как `impersonation.action` с методом и адресом страницы.

Писать сообщения от лица пользователя технически можно, и это не запрещено: без этого не отладить часть жалоб. Аргумент, почему так допустимо, — администратор и так имеет доступ к базе и может вписать любое сообщение напрямую; вход под пользователем не добавляет ему возможностей, зато добавляет журнал.

## Настройки

```php
'auth' => [
    'impersonation' => [
        'parent_cookie_name' => 'jc_auth_parent',
        'lifetime'           => 3600,
        'denied_permissions' => ['users.impersonate', 'admin.access', 'admin.settings.manage', 'admin.roles.manage'],
    ],
],
```
