我们需要同步用户,因此计划使用 TYPO3 调度程序从第三方 API 提取数据,更新现有用户并将新用户添加到
fe_users
表。
更新现有用户可以正常工作,但我不知道如何创建新用户。这是我目前在 TYPO3 v8 中使用的代码。我没有收到任何错误消息,但新用户未添加到数据库中。
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
*/
protected $userRepository;
/**
* @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
*/
protected $persistenceManager;
...
$user = $this->userRepository->findOneByForeignId($id);
if ($user) {
$this->updateUserData($user);
$this->userRepository->update($user);
} else {
$user = new \TYPO3\CMS\Extbase\Domain\Model\FrontendUser();
$this->updateUserData($user);
$this->userRepository->add($user);
}
$this->persistenceManager->persistAll();
我找不到任何在循环中创建新对象的示例。它们(这里是用户模型)总是作为参数注入到控制器操作中。
您确定必须同步所有用户吗? TYPO3 有一个概念叫做认证服务和认证服务。这允许在登录时获取用户。
这有很多好处:
如果API无法访问,则无法进行潜在的缺陷登录
参见:https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Authentication/Index.html