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();
}

 

 

Previous PostTYPO3 Tutorial: StripSpecificTagsViewHelper um nur spezifische Tags zu entfernen