logger->info('Refresh user.', ['user' => $user->getUserIdentifier()]); $freshUser = $this->userRepository->findOneByNpub($user->getUserIdentifier()); if ($freshUser === null) { throw new \InvalidArgumentException('User not found for this magazine tenant.'); } $metadata = $this->cacheService->getMetadata($user->getUserIdentifier()); $freshUser->setMetadata($metadata); return $freshUser; } /** * @inheritDoc */ public function supportsClass(string $class): bool { return $class === User::class; } /** * @inheritDoc */ public function loadUserByIdentifier(string $identifier): UserInterface { $this->logger->info('Load user by identifier.', ['identifier' => $identifier]); $user = $this->userRepository->findOneByNpub($identifier); if (!$user) { $user = new User(); $user->setMagazineSlug($this->tenant->getMagazineSlug()); $user->setNpub($identifier); $this->entityManager->persist($user); $this->entityManager->flush(); } $metadata = $this->cacheService->getMetadata($identifier); $user->setMetadata($metadata); $this->logger->debug('User metadata set.', ['metadata' => json_encode($user->getMetadata())]); return $user; } }