TYPO3 7.6加载后端用户信息

时间:2017-09-04 06:32:45

标签: typo3 typo3-7.6.x

我已将自己的调度程序任务添加到TYPO3,例如,如有必要,将创建新页面。调度程序由特殊的_cli_scheduler用户运行,如果我用它创建新页面,其他编辑者可能看不到它。

我使用DataHandler(以前的TCE)来创建新网页。 start()方法接受可选参数 - 将用作页面创建者的备用用户对象。

拥有uid编辑用户,如何完全实例化\TYPO3\CMS\Core\Authentication\BackendUserAuthentication对象,然后我提供给DataHandler::start()

我在考虑使用对象管理器获取上述类的新实例,并在其上设置uid,但DataHandler检查BackendUserAuthentication对象的其他一些属性,如权限等。

获取BackendUserAuthentication对象的所有用户数据的正确方法是什么?我可以使用任何工厂或存储库吗?

1 个答案:

答案 0 :(得分:0)

没有人能够帮助我,所以我开始挖掘。经过一些逆向工程后,只要你知道他们的ID,我就找到了一个加载任何后端用户的完整方法。我使用以下方法创建了一个只读存储库:


public function fetchById($userId)
{
    /** @var BackendUserAuthentication $user */
    $user = $this->objectManager->get(BackendUserAuthentication::class);
    $user->setBeUserByUid($userId);
    $user->resetUC();
    $user->fetchGroupData();
    $user->getFileStorages();
    $user->workspaceInit();
    $user->setDefaultWorkspace();

    return $user;
}

它将执行以下操作:

  • 从数据库加载用户记录并将其内部存储在$user属性
  • 加载用户的UC
  • 加载用户/组权限
  • 初始化文件存储
  • 初始化工作区

我已经转储了由此方法创建的用户,并与当前登录的用户进行了比较,似乎已经设置了所有必需的属性。

如果我错过了什么,请告诉我。