TYPO3 7.6加载后端用户信息

TYPO3 7.6 load backend user info

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

我正在使用 DataHandler(以前的 TCE)创建新页面。 start() 方法接受一个可选参数 - 将用作页面创建者的替代用户对象。

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

我正在考虑使用对象管理器来获取所提到的 class 的新实例并在其上设置 uid,但是 DataHandler 检查BackendUserAuthentication 对象,如权限等

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

没有人能帮我解决这个问题,所以我开始挖掘。经过一些逆向工程后,我找到了一种加载任何后端用户的完整方法,只要您知道他们的 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
  • 加载 user/group 权限
  • 初始化文件存储
  • 初始化工作区

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

如果我遗漏了什么,请告诉我。