‪TYPO3CMS  ‪main
SwitchUserViewHelper.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
23 use TYPO3\CMS\Core\Imaging\IconSize;
26 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
27 
33 final class ‪SwitchUserViewHelper extends AbstractTagBasedViewHelper
34 {
38  protected ‪$tagName = 'typo3-backend-switch-user';
39 
40  public function ‪initializeArguments(): void
41  {
42  parent::initializeArguments();
43  $this->registerArgument('backendUser', BackendUser::class, 'Target backendUser to switch active session to', true);
44  $this->registerUniversalTagAttributes();
45  }
46 
47  public function ‪render(): string
48  {
50  $targetUser = $this->arguments['backendUser'];
52  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
53 
54  if ((int)$targetUser->getUid() === (int)$currentUser->getUserId()
55  || !$targetUser->isActive()
56  || !$currentUser->isAdmin()
57  || $currentUser->getOriginalUserIdWhenInSwitchUserMode() !== null
58  ) {
59  $this->tag->setTagName('span');
60  $this->tag->addAttribute('class', $this->tag->getAttribute('class') . ' disabled');
61  $this->tag->addAttribute('disabled', 'disabled');
62  $this->tag->setContent($iconFactory->getIcon('empty-empty', IconSize::SMALL)->render());
63  } else {
64  $this->tag->addAttribute('title', self::getLanguageService()->sL('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:switchBackMode'));
65  $this->tag->addAttribute('targetUser', (string)$targetUser->getUid());
66  $this->tag->setContent($iconFactory->getIcon('actions-system-backend-user-switch', IconSize::SMALL)->render());
67  }
68 
69  $this->tag->forceClosingTag(true);
70  return $this->tag->render();
71  }
72 
74  {
75  return ‪$GLOBALS['BE_USER'];
76  }
77 
78  protected static function ‪getLanguageService(): ‪LanguageService
79  {
80  return ‪$GLOBALS['LANG'];
81  }
82 }
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper
Definition: SwitchUserViewHelper.php:34
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper\render
‪render()
Definition: SwitchUserViewHelper.php:46
‪TYPO3\CMS\Beuser\ViewHelpers
Definition: ArrayElementViewHelper.php:18
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper\initializeArguments
‪initializeArguments()
Definition: SwitchUserViewHelper.php:39
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper\$tagName
‪string $tagName
Definition: SwitchUserViewHelper.php:37
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Beuser\Domain\Model\BackendUser
Definition: BackendUser.php:32
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper\getBackendUserAuthentication
‪static getBackendUserAuthentication()
Definition: SwitchUserViewHelper.php:72
‪TYPO3\CMS\Beuser\ViewHelpers\SwitchUserViewHelper\getLanguageService
‪static getLanguageService()
Definition: SwitchUserViewHelper.php:77