| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- declare(strict_types=1);
- namespace App\Service\OnChange\Access;
- use App\Entity\Access\Access;
- use App\Service\Access\AccessProfileCreator;
- use App\Service\MercureHub;
- use App\Service\OnChange\OnChangeContext;
- use App\Service\OnChange\OnChangeDefault;
- use Symfony\Bundle\SecurityBundle\Security;
- use Symfony\Component\Security\Core\Authentication\Token\SwitchUserToken;
- /**
- * Classe OnAccessChange qui comporte toutes les opérations automatiques se produisant lors de l'évolution d'un Access.
- */
- class OnAccessChange extends OnChangeDefault
- {
- public function __construct(
- private Security $security,
- private AccessProfileCreator $accessProfileCreator,
- private MercureHub $mercureHub,
- ) {
- }
- public function onChange(mixed $access, OnChangeContext $context): void
- {
- $this->publishNewProfile($access);
- }
- /**
- * Publie via mercure le nouveau profil de l'access.
- *
- * @throws \Exception
- */
- public function publishNewProfile(Access $access): void
- {
- $token = $this->security->getToken();
- /** @var ?Access $originalAccess */
- $originalAccess = $token instanceof SwitchUserToken ? $token->getOriginalToken()->getUser() : null;
- $profile = $this->accessProfileCreator->getAccessProfile($access, $originalAccess);
- $this->mercureHub->publishUpdate($access->getId(), $profile);
- }
- }
|