如何在TYPO3上使用extbase设置或添加现有用户和新用户的前端用户组

问题描述 投票:0回答:0

我需要将用户从其他应用程序迁移到TYPO3,但无法设置新用户的用户组。更新现有用户并添加组作品。

这是我的代码。

/**
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
 */
protected $userRepository;

/**
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
 */
protected $userGroupRepository;

/**
 * @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
 */
protected $persistenceManager;

...

$this->userGroup = $this->userGroupRepository->findOneByTitle('My desired group');
$this->userGroupStorage = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->userGroupStorage->attach($this->userGroup);

$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();

...

private function updateUserData($user)
{
    $user->setPid($this->pid);
    $user->setFirstName($this->firstName);
    ...
    
    // I use either this or the other line, not both at the same time!
    
    // works on new and existing users but never gets persisted
    $user->setUsergroup($this->userGroupStorage);
    
    // throws error on new user but gets persisted on existing users
    $user->addUsergroup($this->userGroup);
}

为什么 UserGroupStorage 没有存储在数据库中?我的解决方法是创建用户持久化它,从数据库重新加载它并添加用户组。但这不是好的做法。

typo3 extbase typo3-9.x
© www.soinside.com 2019 - 2024. All rights reserved.