<?php 
 
/* 
 * This file is part of the Symfony package. 
 * 
 * (c) Fabien Potencier <[email protected]> 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
namespace Symfony\Component\Security\Core\Authentication\Provider; 
 
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; 
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; 
use Symfony\Component\Security\Core\Exception\AuthenticationException; 
use Symfony\Component\Security\Core\Exception\BadCredentialsException; 
 
trigger_deprecation('symfony/security-core', '5.3', 'The "%s" class is deprecated, use the new authenticator system instead.', AnonymousAuthenticationProvider::class); 
 
/** 
 * AnonymousAuthenticationProvider validates AnonymousToken instances. 
 * 
 * @author Fabien Potencier <[email protected]> 
 * 
 * @deprecated since Symfony 5.3, use the new authenticator system instead 
 */ 
class AnonymousAuthenticationProvider implements AuthenticationProviderInterface 
{ 
    /** 
     * Used to determine if the token is created by the application 
     * instead of a malicious client. 
     * 
     * @var string 
     */ 
    private $secret; 
 
    /** 
     * @param string $secret The secret shared with the AnonymousToken 
     */ 
    public function __construct(string $secret) 
    { 
        $this->secret = $secret; 
    } 
 
    /** 
     * {@inheritdoc} 
     */ 
    public function authenticate(TokenInterface $token) 
    { 
        if (!$this->supports($token)) { 
            throw new AuthenticationException('The token is not supported by this authentication provider.'); 
        } 
 
        if ($this->secret !== $token->getSecret()) { 
            throw new BadCredentialsException('The Token does not contain the expected key.'); 
        } 
 
        return $token; 
    } 
 
    /** 
     * {@inheritdoc} 
     */ 
    public function supports(TokenInterface $token) 
    { 
        return $token instanceof AnonymousToken; 
    } 
}