vendor/ibexa/http-cache/src/lib/EventSubscriber/CachePurge/UserEventsSubscriber.php line 81

Open in your IDE?
  1. <?php
  2. /**
  3. * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4. * @license For full copyright and license information view LICENSE file distributed with this source code.
  5. */
  6. declare(strict_types=1);
  7. namespace Ibexa\HttpCache\EventSubscriber\CachePurge;
  8. use Ibexa\Contracts\Core\Repository\Events\User\AssignUserToUserGroupEvent;
  9. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserEvent;
  10. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserGroupEvent;
  11. use Ibexa\Contracts\Core\Repository\Events\User\UnAssignUserFromUserGroupEvent;
  12. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserEvent;
  13. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserGroupEvent;
  14. use Ibexa\Contracts\HttpCache\Handler\ContentTagInterface;
  15. final class UserEventsSubscriber extends AbstractSubscriber
  16. {
  17. public static function getSubscribedEvents(): array
  18. {
  19. return [
  20. AssignUserToUserGroupEvent::class => 'onAssignUserToUserGroup',
  21. CreateUserGroupEvent::class => 'onCreateUserGroup',
  22. CreateUserEvent::class => 'onCreateUser',
  23. UnAssignUserFromUserGroupEvent::class => 'onUnAssignUserFromUserGroup',
  24. UpdateUserGroupEvent::class => 'onUpdateUserGroup',
  25. UpdateUserEvent::class => 'onUpdateUser',
  26. ];
  27. }
  28. public function onAssignUserToUserGroup(AssignUserToUserGroupEvent $event): void
  29. {
  30. $userId = $event->getUser()->id;
  31. $userGroupId = $event->getUserGroup()->id;
  32. $this->purgeClient->purge([
  33. ContentTagInterface::CONTENT_PREFIX . $userId,
  34. ContentTagInterface::CONTENT_PREFIX . $userGroupId,
  35. 'ez-user-context-hash',
  36. ]);
  37. }
  38. public function onCreateUserGroup(CreateUserGroupEvent $event): void
  39. {
  40. $userGroupId = $event->getUserGroup()->id;
  41. $tags = array_merge(
  42. $this->getContentTags($userGroupId),
  43. $this->getContentLocationsTags($userGroupId)
  44. );
  45. $this->purgeClient->purge($tags);
  46. }
  47. public function onCreateUser(CreateUserEvent $event): void
  48. {
  49. $userId = $event->getUser()->id;
  50. $tags = array_merge(
  51. $this->getContentTags($userId),
  52. $this->getContentLocationsTags($userId)
  53. );
  54. $this->purgeClient->purge($tags);
  55. }
  56. public function onUnAssignUserFromUserGroup(UnAssignUserFromUserGroupEvent $event): void
  57. {
  58. $userId = $event->getUser()->id;
  59. $userGroupId = $event->getUserGroup()->id;
  60. $this->purgeClient->purge([
  61. ContentTagInterface::CONTENT_PREFIX . $userId,
  62. ContentTagInterface::CONTENT_PREFIX . $userGroupId,
  63. 'ez-user-context-hash',
  64. ]);
  65. }
  66. public function onUpdateUserGroup(UpdateUserGroupEvent $event): void
  67. {
  68. $userGroupId = $event->getUserGroup()->id;
  69. $tags = array_merge(
  70. $this->getContentTags($userGroupId),
  71. $this->getContentLocationsTags($userGroupId)
  72. );
  73. $this->purgeClient->purge($tags);
  74. }
  75. public function onUpdateUser(UpdateUserEvent $event): void
  76. {
  77. $userId = $event->getUser()->id;
  78. $tags = array_merge(
  79. $this->getContentTags($userId),
  80. $this->getContentLocationsTags($userId)
  81. );
  82. $this->purgeClient->purge($tags);
  83. }
  84. }
  85. class_alias(UserEventsSubscriber::class, 'EzSystems\PlatformHttpCacheBundle\EventSubscriber\CachePurge\UserEventsSubscriber');