protected function mergeTokens($managerTokens, $sessionTokens)
{
$resultTokens = [];
if (!is_array($managerTokens)) {
return $resultTokens;
}
/** @var $managerToken TokenInterface */
foreach ($managerTokens as $managerToken) {
$noCorrespondingSessionTokenFound = true;
if (!is_array($sessionTokens)) {
continue;
}
/** @var $sessionToken TokenInterface */
foreach ($sessionTokens as $sessionToken) {
if ($sessionToken->getAuthenticationProviderName() === $managerToken->getAuthenticationProviderName()) {
$session = $this->sessionManager->getCurrentSession();
$this->securityLogger->log(sprintf('Session %s contains auth token %s for provider %s. Status: %s', $session->getId(), get_class($sessionToken), $sessionToken->getAuthenticationProviderName(), $this->tokenStatusLabels[$sessionToken->getAuthenticationStatus()]), LOG_INFO, null, 'Flow');
$resultTokens[$sessionToken->getAuthenticationProviderName()] = $sessionToken;
$noCorrespondingSessionTokenFound = false;
}
}
if ($noCorrespondingSessionTokenFound) {
$resultTokens[$managerToken->getAuthenticationProviderName()] = $managerToken;
}
}
return $resultTokens;
}