2017-09-04 87 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

  • 裝載用戶/組權限
  • 初始化文件存儲
  • 初始化工作區

我甩了用戶通過此方法創建的,並與當前登錄的用戶,並似乎所有必要屬性設置。

請讓我知道,如果我錯過了什麼。