nginxsonarrradarrplexorganizrdashboardapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmark
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
<?php
|
|
|
|
namespace Http\Message\Authentication;
|
|
|
|
use Http\Message\Authentication;
|
|
use Http\Message\RequestMatcher\CallbackRequestMatcher;
|
|
use Psr\Http\Message\RequestInterface;
|
|
|
|
@trigger_error('The '.__NAMESPACE__.'\Matching class is deprecated since version 1.2 and will be removed in 2.0. Use Http\Message\Authentication\RequestConditional instead.', E_USER_DEPRECATED);
|
|
|
|
/**
|
|
* Authenticate a PSR-7 Request if the request is matching.
|
|
*
|
|
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
|
*
|
|
* @deprecated since since version 1.2, and will be removed in 2.0. Use {@link RequestConditional} instead.
|
|
*/
|
|
final class Matching implements Authentication
|
|
{
|
|
/**
|
|
* @var Authentication
|
|
*/
|
|
private $authentication;
|
|
|
|
/**
|
|
* @var CallbackRequestMatcher
|
|
*/
|
|
private $matcher;
|
|
|
|
/**
|
|
* @param Authentication $authentication
|
|
* @param callable|null $matcher
|
|
*/
|
|
public function __construct(Authentication $authentication, callable $matcher = null)
|
|
{
|
|
if (is_null($matcher)) {
|
|
$matcher = function () {
|
|
return true;
|
|
};
|
|
}
|
|
|
|
$this->authentication = $authentication;
|
|
$this->matcher = new CallbackRequestMatcher($matcher);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function authenticate(RequestInterface $request)
|
|
{
|
|
if ($this->matcher->matches($request)) {
|
|
return $this->authentication->authenticate($request);
|
|
}
|
|
|
|
return $request;
|
|
}
|
|
|
|
/**
|
|
* Creates a matching authentication for an URL.
|
|
*
|
|
* @param Authentication $authentication
|
|
* @param string $url
|
|
*
|
|
* @return self
|
|
*/
|
|
public static function createUrlMatcher(Authentication $authentication, $url)
|
|
{
|
|
$matcher = function (RequestInterface $request) use ($url) {
|
|
return preg_match($url, $request->getRequestTarget());
|
|
};
|
|
|
|
return new static($authentication, $matcher);
|
|
}
|
|
}
|
|
|