diff --git a/src/Middleware/ResourceServerMiddleware.php b/src/Middleware/ResourceServerMiddleware.php new file mode 100644 index 00000000..b1f26bf2 --- /dev/null +++ b/src/Middleware/ResourceServerMiddleware.php @@ -0,0 +1,54 @@ +server = $server; + } + + /** + * @param \Psr\Http\Message\ServerRequestInterface $request + * @param \Psr\Http\Message\ResponseInterface $response + * @param callable $next + * + * @return \Psr\Http\Message\ResponseInterface + */ + public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) + { + if ($request->hasHeader('authorization') === false) { + $exception = OAuthServerException::accessDenied('Missing authorization header'); + + return $exception->generateHttpResponse($response); + } + + $request = $this->server->getDefaultResponseType()->determineAccessTokenInHeader($request); + + if ($request->getAttribute('oauth_access_token') === null) { + $exception = OAuthServerException::accessDenied('Access token was invalid'); + + return $exception->generateHttpResponse($response); + } + + // Pass the request and response on to the next responder in the chain + return $next($request, $response); + } +}