TYPO3 12 — Пользовательский вход после регистрации
У меня есть собственное расширение для регистрации пользователя. После успешной регистрации я хочу автоматически войти в систему.
Раньше я использовал следующий скрипт, который больше не работает в TYPO3 12:
$userToLogin = 42; // userId after registration
$feUser = $GLOBALS['TSFE']->fe_user;
unset($feUser->user);
$feUser->createUserSession($userToLogin);
$feUser->loginSessionStarted = TRUE;
$feUser->user = $feUser->fetchUserSession();
$GLOBALS['TSFE']->loginUser = 1;
я уже реализовал службу аутентификации, но она не вызывается автоматически после регистрации:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
'bo_xyz',
'auth',
\VENDOR\Extension\Service\MyAuthService::class,
array(
'title' => 'My Authentication',
'description' => '',
'subtype' => 'authUserFE',
'available' => true,
'priority' => 60,
'quality' => 50,
'os' => '',
'exec' => '',
'className' => \VENDOR\Extension\Service\MyAuthService::class
)
);
в классеMyAuthService
это функцияauthUser()
, но это не называется. я передаю logintype=login через POST. как мне заставить службу работать? есть ли у вас какие-либо советы по автоматическому входу в систему на основе идентификатора пользователя?
РЕШЕНИЕ После некоторых исследований/тестов я сам нашел решение, это работает для меня:
$feUser = $GLOBALS['TSFE']->fe_user;
unset($feUser->user);
$sessionResult = $feUser->createUserSession(['uid' => 42]);
$feUser->loginSessionStarted = TRUE;
$GLOBALS['TSFE']->loginUser = 1;
setcookie("fe_typo_user", $sessionResult->getJwt(), 0, '/');