Mittlerweile ist es nicht mehr möglich über $GLOBALS['TSFE']->fe_user die Daten zu holen, deshalb finden Sie hier den neuen Weg, direkt mit Extbase.
FE-User Viewhelper
In diesem Beispiel möchten wir in einem Viewhelper die User-ID des Frontend Users herausbekommen:
<?php
namespace LdoerrDotCom\MeineExt\ViewHelpers;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class GetFeUserViewHelper extends AbstractViewHelper
{
/**
* As this ViewHelper renders HTML, the output must not be escaped.
*
* @var bool
*/
protected $escapeOutput = false;
/**
* Arguments Initialization
*/
public function initializeArguments()
{
$this->registerArgument('field', 'String', 'field to return', true);
}
/**
* Render method
* @return string
*/
public function render()
{
$context = GeneralUtility::makeInstance(Context::class);
$frontendUserId = $context->getPropertyFromAspect('frontend.user', 'id');
if($frontendUserId !== 0) {
$userInfo = $frontendUserId;
}
else {
$userInfo = false;
}
return $userInfo;
}
}
Dieser Viewhelper "GetFeUserViewHelper" gibt die aktuelle User-ID zurück, wenn man eingeloggt ist oder ein false, wenn kein Login aktiv ist.
Einsatz im Controller/Service
Vorausgesetzt, wir haben ein eigenes FE-User Model, können wir auf die FE-User Tabelle so zugreifen:
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use LdoerrDotCom\MeineExt\Domain\Repository\FrontendUserRepository;
public function getLoggedInFrontendUser(): ?\TYPO3\CMS\Extbase\Domain\Model\FrontendUser
{
$context = GeneralUtility::makeInstance(Context::class);
$feUserId = $context->getPropertyFromAspect('frontend.user', 'id');
if ($feUserId === null) {
return null;
}
/** @var FrontendUserRepository $frontendUserRepository */
$frontendUserRepository = GeneralUtility::makeInstance(FrontendUserRepository::class);
return $frontendUserRepository->findByUid($feUserId);
}
Nutzen können wir die Methode jetzt so:
$feUser = $this->getLoggedInFrontendUser();
if ($feUser !== null) {
$username = $feUser->getUsername();
$email = $feUser->getEmail();
$firstName = $feUser->getFirstName();
$lastName = $feUser->getLastName();
}