first
This commit is contained in:
48
system/vendor/php-http/message/src/Authentication/AutoBasicAuth.php
vendored
Executable file
48
system/vendor/php-http/message/src/Authentication/AutoBasicAuth.php
vendored
Executable file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request using Basic Auth based on credentials in the URI.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class AutoBasicAuth implements Authentication
|
||||
{
|
||||
/**
|
||||
* Whether user info should be removed from the URI.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $shouldRemoveUserInfo;
|
||||
|
||||
/**
|
||||
* @param bool|true $shouldRremoveUserInfo
|
||||
*/
|
||||
public function __construct($shouldRremoveUserInfo = true)
|
||||
{
|
||||
$this->shouldRemoveUserInfo = (bool) $shouldRremoveUserInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
$uri = $request->getUri();
|
||||
$userInfo = $uri->getUserInfo();
|
||||
|
||||
if (!empty($userInfo)) {
|
||||
if ($this->shouldRemoveUserInfo) {
|
||||
$request = $request->withUri($uri->withUserInfo(''));
|
||||
}
|
||||
|
||||
$request = $request->withHeader('Authorization', sprintf('Basic %s', base64_encode($userInfo)));
|
||||
}
|
||||
|
||||
return $request;
|
||||
}
|
||||
}
|
||||
44
system/vendor/php-http/message/src/Authentication/BasicAuth.php
vendored
Executable file
44
system/vendor/php-http/message/src/Authentication/BasicAuth.php
vendored
Executable file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request using Basic Auth.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class BasicAuth implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $username;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $password;
|
||||
|
||||
/**
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
*/
|
||||
public function __construct($username, $password)
|
||||
{
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
$header = sprintf('Basic %s', base64_encode(sprintf('%s:%s', $this->username, $this->password)));
|
||||
|
||||
return $request->withHeader('Authorization', $header);
|
||||
}
|
||||
}
|
||||
37
system/vendor/php-http/message/src/Authentication/Bearer.php
vendored
Executable file
37
system/vendor/php-http/message/src/Authentication/Bearer.php
vendored
Executable file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request using a token.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class Bearer implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* @param string $token
|
||||
*/
|
||||
public function __construct($token)
|
||||
{
|
||||
$this->token = $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
$header = sprintf('Bearer %s', $this->token);
|
||||
|
||||
return $request->withHeader('Authorization', $header);
|
||||
}
|
||||
}
|
||||
47
system/vendor/php-http/message/src/Authentication/Chain.php
vendored
Executable file
47
system/vendor/php-http/message/src/Authentication/Chain.php
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request with a multiple authentication methods.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class Chain implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var Authentication[]
|
||||
*/
|
||||
private $authenticationChain = [];
|
||||
|
||||
/**
|
||||
* @param Authentication[] $authenticationChain
|
||||
*/
|
||||
public function __construct(array $authenticationChain = [])
|
||||
{
|
||||
foreach ($authenticationChain as $authentication) {
|
||||
if (!$authentication instanceof Authentication) {
|
||||
throw new \InvalidArgumentException(
|
||||
'Members of the authentication chain must be of type Http\Message\Authentication'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->authenticationChain = $authenticationChain;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
foreach ($this->authenticationChain as $authentication) {
|
||||
$request = $authentication->authenticate($request);
|
||||
}
|
||||
|
||||
return $request;
|
||||
}
|
||||
}
|
||||
36
system/vendor/php-http/message/src/Authentication/Header.php
vendored
Executable file
36
system/vendor/php-http/message/src/Authentication/Header.php
vendored
Executable file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
class Header implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $name;
|
||||
|
||||
/**
|
||||
* @var string|string[]
|
||||
*/
|
||||
private $value;
|
||||
|
||||
/**
|
||||
* @param string|string[] $value
|
||||
*/
|
||||
public function __construct(string $name, $value)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
return $request->withHeader($this->name, $this->value);
|
||||
}
|
||||
}
|
||||
69
system/vendor/php-http/message/src/Authentication/Matching.php
vendored
Executable file
69
system/vendor/php-http/message/src/Authentication/Matching.php
vendored
Executable file
@@ -0,0 +1,69 @@
|
||||
<?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;
|
||||
|
||||
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 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);
|
||||
}
|
||||
}
|
||||
47
system/vendor/php-http/message/src/Authentication/QueryParam.php
vendored
Executable file
47
system/vendor/php-http/message/src/Authentication/QueryParam.php
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request by adding parameters to its query.
|
||||
*
|
||||
* Note: Although in some cases it can be useful, we do not recommend using query parameters for authentication.
|
||||
* Credentials in the URL is generally unsafe as they are not encrypted, anyone can see them.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class QueryParam implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $params = [];
|
||||
|
||||
public function __construct(array $params)
|
||||
{
|
||||
$this->params = $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
$uri = $request->getUri();
|
||||
$query = $uri->getQuery();
|
||||
$params = [];
|
||||
|
||||
parse_str($query, $params);
|
||||
|
||||
$params = array_merge($params, $this->params);
|
||||
|
||||
$query = http_build_query($params, '', '&');
|
||||
|
||||
$uri = $uri->withQuery($query);
|
||||
|
||||
return $request->withUri($uri);
|
||||
}
|
||||
}
|
||||
43
system/vendor/php-http/message/src/Authentication/RequestConditional.php
vendored
Executable file
43
system/vendor/php-http/message/src/Authentication/RequestConditional.php
vendored
Executable file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Http\Message\RequestMatcher;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request if the request is matching the given request matcher.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class RequestConditional implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var RequestMatcher
|
||||
*/
|
||||
private $requestMatcher;
|
||||
|
||||
/**
|
||||
* @var Authentication
|
||||
*/
|
||||
private $authentication;
|
||||
|
||||
public function __construct(RequestMatcher $requestMatcher, Authentication $authentication)
|
||||
{
|
||||
$this->requestMatcher = $requestMatcher;
|
||||
$this->authentication = $authentication;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
if ($this->requestMatcher->matches($request)) {
|
||||
return $this->authentication->authenticate($request);
|
||||
}
|
||||
|
||||
return $request;
|
||||
}
|
||||
}
|
||||
67
system/vendor/php-http/message/src/Authentication/Wsse.php
vendored
Executable file
67
system/vendor/php-http/message/src/Authentication/Wsse.php
vendored
Executable file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Authentication;
|
||||
|
||||
use Http\Message\Authentication;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Authenticate a PSR-7 Request using WSSE.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
final class Wsse implements Authentication
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $username;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $password;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $hashAlgorithm;
|
||||
|
||||
/**
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param string $hashAlgorithm To use a better hashing algorithm than the weak sha1, pass the algorithm to use, e.g. "sha512"
|
||||
*/
|
||||
public function __construct($username, $password, $hashAlgorithm = 'sha1')
|
||||
{
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
if (false === in_array($hashAlgorithm, hash_algos())) {
|
||||
throw new \InvalidArgumentException(sprintf('Unaccepted hashing algorithm: %s', $hashAlgorithm));
|
||||
}
|
||||
$this->hashAlgorithm = $hashAlgorithm;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function authenticate(RequestInterface $request)
|
||||
{
|
||||
$nonce = substr(md5(uniqid(uniqid().'_', true)), 0, 16);
|
||||
$created = date('c');
|
||||
$digest = base64_encode(hash($this->hashAlgorithm, base64_decode($nonce).$created.$this->password, true));
|
||||
|
||||
$wsse = sprintf(
|
||||
'UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',
|
||||
$this->username,
|
||||
$digest,
|
||||
$nonce,
|
||||
$created
|
||||
);
|
||||
|
||||
return $request
|
||||
->withHeader('Authorization', 'WSSE profile="UsernameToken"')
|
||||
->withHeader('X-WSSE', $wsse)
|
||||
;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user