. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Rebuild\Actions; use Espo\Core\Rebuild\RebuildAction; use Espo\Core\Utils\Config; use Espo\Core\Utils\SystemUser; use Espo\Entities\User; use Espo\ORM\EntityManager; class AddSystemUser implements RebuildAction { public function __construct( private EntityManager $entityManager, private Config $config, private SystemUser $systemUser ) {} public function process(): void { $repository = $this->entityManager->getRDBRepositoryByClass(User::class); $user = $repository ->where(['userName' => SystemUser::NAME]) ->findOne(); if ($user) { if ($user->getId() === $this->systemUser->getId()) { return; } $this->entityManager ->getQueryExecutor() ->execute( $this->entityManager ->getQueryBuilder() ->delete() ->from(User::ENTITY_TYPE) ->where(['id' => $user->getId()]) ->build() ); } /** @var array $attributes */ $attributes = $this->config->get('systemUserAttributes'); $user = $repository->getNew(); $user->set('id', $this->systemUser->getId()); $user->set('userName', SystemUser::NAME); $user->set('type', User::TYPE_SYSTEM); $user->set($attributes); $repository->save($user); } }