public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey) { if (!$userProvider instanceof ApiKeyUserProvider) { throw new \InvalidArgumentException(sprintf('ApiKeyUserProvider user provider required: %s was provided.', get_class($userProvider))); } $apiKey = $token->getCredentials(); $authToken = $userProvider->getAuthTokenForApiKey($apiKey); if (!$authToken) { throw new AccessDeniedHttpException(sprintf('API Key "%s" does not exist.', $apiKey)); } if ($authToken->getExpiresAt() < new DateTime()) { return null; } if (!$authToken->getUserLogin()->getIsActive()) { return null; } $login = $authToken->getUserLogin()->getEmail(); $user = $userProvider->loadUserByUsername($login); $token = new PreAuthenticatedToken($user, $apiKey, $providerKey, UserEntity::getTopRole($authToken->getIsManager())); $token->setAttribute("fullName", $authToken->getUserLogin()->getFullName()); return $token; }