* ``` * * @internal */ final class MfaStatusViewHelper extends AbstractTagBasedViewHelper { protected $tagName = 'span'; public function __construct( private readonly MfaProviderRegistry $mfaProviderRegistry ) { parent::__construct(); } public function initializeArguments(): void { parent::initializeArguments(); $this->registerArgument('userUid', 'int', 'The uid of the user to check', true); } public function render(): string { $userUid = (int)($this->arguments['userUid'] ?? 0); if (!$userUid) { return ''; } $backendUser = GeneralUtility::makeInstance(BackendUserAuthentication::class); $backendUser->enablecolumns = ['deleted' => true]; $backendUser->setBeUserByUid($userUid); // Check if user has active providers if (!$this->mfaProviderRegistry->hasActiveProviders($backendUser)) { return ''; } // Check locked providers if ($this->mfaProviderRegistry->hasLockedProviders($backendUser)) { $this->tag->addAttribute('class', 'badge badge-warning'); $this->tag->setContent(htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:lockedMfaProviders'))); return $this->tag->render(); } // Add mfa enabled label since we have active providers and non of them are locked $this->tag->addAttribute('class', 'badge badge-info'); $this->tag->setContent(htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:mfaEnabled'))); return $this->tag->render(); } private function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }