* @copyright Copyright (c) Alex Bilbie * @license http://mit-license.org/ * * @link https://github.com/thephpleague/oauth2-server */ namespace League\OAuth2\Server; use League\OAuth2\Server\AuthorizationValidators\AuthorizationValidatorInterface; use League\OAuth2\Server\AuthorizationValidators\BearerTokenValidator; use League\OAuth2\Server\Exception\OAuthServerException; use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface; use Psr\Http\Message\ServerRequestInterface; class ResourceServer { /** * @var AccessTokenRepositoryInterface */ private $accessTokenRepository; /** * @var CryptKey */ private $publicKey; /** * @var null|AuthorizationValidatorInterface */ private $authorizationValidator; /** * New server instance. * * @param AccessTokenRepositoryInterface $accessTokenRepository * @param CryptKey|string $publicKey * @param null|AuthorizationValidatorInterface $authorizationValidator */ public function __construct( AccessTokenRepositoryInterface $accessTokenRepository, $publicKey, AuthorizationValidatorInterface $authorizationValidator = null ) { $this->accessTokenRepository = $accessTokenRepository; if (!$publicKey instanceof CryptKey) { $publicKey = new CryptKey($publicKey); } $this->publicKey = $publicKey; $this->authorizationValidator = $authorizationValidator; } /** * @return AuthorizationValidatorInterface */ protected function getAuthorizationValidator() { if (!$this->authorizationValidator instanceof AuthorizationValidatorInterface) { $this->authorizationValidator = new BearerTokenValidator($this->accessTokenRepository); } $this->authorizationValidator->setPublicKey($this->publicKey); return $this->authorizationValidator; } /** * Determine the access token validity. * * @param ServerRequestInterface $request * * @throws OAuthServerException * * @return ServerRequestInterface */ public function validateAuthenticatedRequest(ServerRequestInterface $request) { return $this->getAuthorizationValidator()->validateAuthorization($request); } }