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 权限
- 初始化文件存储
- 初始化工作区
我已经转储了通过此方法创建的用户,并与当前登录的用户进行了比较,似乎所有必要的属性都已设置。
如果我遗漏了什么,请告诉我。
我已经将我自己的调度程序任务添加到 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 权限
- 初始化文件存储
- 初始化工作区
我已经转储了通过此方法创建的用户,并与当前登录的用户进行了比较,似乎所有必要的属性都已设置。
如果我遗漏了什么,请告诉我。