TYPO3 / Extbase - переключиться на другого fe_user - и, наконец, вернуться к исходному пользователю - PullRequest
2 голосов
/ 30 января 2020

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

  1. Если fe_user X (uid: 123) разрешено «переключаться» (например, член определенной группы fe_user)
  2. Переключиться на пользователя A
  3. Переключиться на пользователя B
  4. ... и т. Д. ...
  5. Теперь переключиться обратно на пользователя "origin" X (uid: 123)

Информация о пользователе-источнике не должна храниться в $ GLOBALS ['TSFE'] -> fe_user или subarray, я полагаю. Потому что это позволило бы самому пользователю А переключиться обратно на X (uid: 123), хотя этот пользователь никогда раньше не был этим пользователем. Таким образом, информация о «переключении назад» должна храниться где-либо еще. Но где?

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Получил ответ сам. Хитрость заключается в том, чтобы хранить информацию в данных сеанса типа «ses» (поскольку «пользователь» перезаписывается на каждом коммутаторе).

if(!$frontendUserAuthentication->getKey('ses', 'tx_ext_originuser')) {
   $frontendUserAuthentication->setKey('ses', 'tx_ext_originuser', $frontendUserAuthentication->user['uid']);
   $frontendUserAuthentication->storeSessionData();  
}
0 голосов
/ 30 января 2020

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

...