2017-09-04 84 views
0

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

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

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

我在考虑使用对象管理器以获得所提到的新的类实例的,只是设置uid就可以了,但DataHandler检查BackendUserAuthentication对象的某些其他属性,如权限等

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

回答

0

没有人能够帮助我,所以我开始挖掘。经过一些逆向工程,我发现只要知道他们的ID,就可以加载任何后端用户。我已经创建了下面的方法的只读存储库:从数据库

  • 加载用户记录,并在内部存储它在$user财产
  • 装入:

    
    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; 
    } 
    

    它会做以下用户的UC

  • 装载用户/组权限
  • 初始化文件存储
  • 初始化工作区

我甩了用户通过此方法创建的,并与当前登录的用户,并似乎所有必要属性设置。

请让我知道,如果我错过了什么。