Spaces:
No application file
No application file
| namespace Mautic\UserBundle\Security\SAML\Store; | |
| use Doctrine\Persistence\ObjectManager; | |
| use LightSaml\Provider\TimeProvider\TimeProviderInterface; | |
| use LightSaml\Store\Id\IdStoreInterface; | |
| use Mautic\UserBundle\Entity\IdEntry; | |
| class IdStore implements IdStoreInterface | |
| { | |
| public function __construct( | |
| private ObjectManager $manager, | |
| private TimeProviderInterface $timeProvider | |
| ) { | |
| } | |
| /** | |
| * @param string $entityId | |
| * @param string $id | |
| */ | |
| public function set($entityId, $id, \DateTime $expiryTime): void | |
| { | |
| $idEntry = $this->manager->find(IdEntry::class, ['entityId' => $entityId, 'id' => $id]); | |
| if (null == $idEntry) { | |
| $idEntry = new IdEntry(); | |
| } | |
| $idEntry->setEntityId($entityId) | |
| ->setId($id) | |
| ->setExpiryTime($expiryTime); | |
| $this->manager->persist($idEntry); | |
| $this->manager->flush(); | |
| } | |
| /** | |
| * @param string $entityId | |
| * @param string $id | |
| */ | |
| public function has($entityId, $id): bool | |
| { | |
| /** @var IdEntry $idEntry */ | |
| $idEntry = $this->manager->find(IdEntry::class, ['entityId' => $entityId, 'id' => $id]); | |
| if (null == $idEntry) { | |
| return false; | |
| } | |
| if ($idEntry->getExpiryTime()->getTimestamp() < $this->timeProvider->getTimestamp()) { | |
| return false; | |
| } | |
| return true; | |
| } | |
| } | |