コード例 #1
0
 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;
 }