vendor/wns/security-compliance-suite/src/Logging/Subscriber/CacheInvalidationSubscriber.php line 40

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace WnsSecurityComplianceSuite\Logging\Subscriber;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use WnsSecurityComplianceSuite\Logging\Provider\SourceInfoProvider;
  7. final class CacheInvalidationSubscriber implements EventSubscriberInterface
  8. {
  9. private SourceInfoProvider $sourceInfoProvider;
  10. public function __construct(
  11. SourceInfoProvider $sourceInfoProvider
  12. ) {
  13. $this->sourceInfoProvider = $sourceInfoProvider;
  14. }
  15. public static function getSubscribedEvents()
  16. {
  17. return [
  18. 'user.written' => 'invalidateUserCache',
  19. 'user.deleted' => 'invalidateUserCache',
  20. 'integration.written' => 'invalidateIntegrationCache',
  21. 'integration.deleted' => 'invalidateIntegrationCache',
  22. ];
  23. }
  24. public function invalidateUserCache(EntityWrittenEvent $event): void
  25. {
  26. foreach ($event->getWriteResults() as $userWriteResult) {
  27. /** @var string $userId */
  28. $userId = $userWriteResult->getPrimaryKey();
  29. $this->sourceInfoProvider->clearUserCache($userId);
  30. }
  31. }
  32. public function invalidateIntegrationCache(EntityWrittenEvent $event): void
  33. {
  34. foreach ($event->getWriteResults() as $integrationWriteResult) {
  35. /** @var string $integrationId */
  36. $integrationId = $integrationWriteResult->getPrimaryKey();
  37. $this->sourceInfoProvider->clearIntegrationCache($integrationId);
  38. }
  39. }
  40. }