public function terminateSession($entityId, $nameId, $nameIdFormat, $sessionIndex = null) { $ssoState = $this->ssoStateStore->get(); $count = 0; $ssoState->modify(function (SsoSessionState $session) use($entityId, $nameId, $nameIdFormat, &$count) { if (($session->getIdpEntityId() == $entityId || $session->getSpEntityId() == $entityId) && $session->getNameId() == $nameId && $session->getNameIdFormat() == $nameIdFormat) { ++$count; return false; } return true; }); $this->ssoStateStore->set($ssoState); return $count; }
/** * @param Assertion[] $assertions * @param string $ownEntityId * @param string $partyEntityId */ public function processAssertions(array $assertions, $ownEntityId, $partyEntityId) { $now = $this->timeProvider->getDateTime()->setTimezone(new \DateTimeZone('GMT')); $ssoState = $this->ssoStateStore->get(); foreach ($assertions as $assertion) { if ($assertion instanceof Assertion) { if ($this->supportsSession($assertion)) { $this->checkSession($ownEntityId, $partyEntityId, $ssoState, $assertion, $now); } } else { throw new \InvalidArgumentException('Expected Assertion'); } } $this->ssoStateStore->set($ssoState); }