Создайте плагин ManagerAuthAs на 2 события: OnHandleRequest и OnManagerPageBeforeRender.
Код плагина:
switch ($modx->event->name) { case 'OnHandleRequest': if (@$_GET['action'] === 'manager/auth_as') { $auth_user_id = (int)$_GET['user_id']; $auth_contexts = $modx->user->getSessionContexts(); if (!empty($auth_user_id) && !empty($auth_contexts['mgr']) && $modx->context->key !== 'mgr') { if ($user = $modx->getObject('modUser', $auth_user_id)) { $modx->user = $user; $contexts = $modx->getIterator('modContext', ['key:!=' => 'mgr']); foreach ($contexts as $context) { $modx->user->addSessionContext($context->key); $modx->getUser($context->key, true); } } } $modx->sendRedirect($modx->makeUrl($modx->getOption('site_start'))); } break; case 'OnManagerPageBeforeRender': switch ($controller->config['controller']) { case 'security/user': $controller->addHtml(" <script type='text/javascript'> Ext.ComponentMgr.onAvailable('modx-panel-users', function () { Ext.override(MODx.grid.User, { getMenu: MODx.grid.User.prototype.getMenu.createSequence(function (grid, rowIndex) { var data = grid.getStore().getAt(rowIndex).data; if (!data.active || data.blocked) { return; } this.addContextMenuItem(['-', { text: 'Авторизоваться', handler: function () { window.open(MODx.config.site_url + '?action=manager/auth_as&user_id=' + data.id) }, scope: this }]) }) }) }); </script> "); break; } break; }