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, '/');

0 ответов

Другие вопросы по тегам