PHP Class RKA\Middleware\IpAddress

Show file Open project: akrabat/rka-ip-address-middleware

Protected Properties

Property Type Description
$attributeName string Name of the attribute added to the ServerRequest object
$checkProxyHeaders boolean Defaults to false as only $_SERVER['REMOTE_ADDR'] is a trustworthy source of IP address.
$headersToInspect array List of proxy headers inspected for the client IP address
$trustedProxies array If not empty, then one of these IP addresses must be in $_SERVER['REMOTE_ADDR'] in order for the proxy headers to be looked at.

Public Methods

Method Description
__construct ( boolean $checkProxyHeaders = false, array $trustedProxies = [], string $attributeName = null, array $headersToInspect = [] ) Constructor
__invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next ) : Psr\Http\Message\ResponseInterface Set the "$attributeName" attribute to the client's IP address as determined from the proxy header (X-Forwarded-For or from $_SERVER['REMOTE_ADDR']

Protected Methods

Method Description
determineClientIpAddress ( Psr\Http\Message\ServerRequestInterface $request ) : string Find out the client's IP address from the headers available to us
isValidIpAddress ( string $ip ) : boolean Check that a given string is a valid IP address

Private Methods

Method Description
getFirstIpAddressFromHeader ( Psr\Http\Message\ServerRequestInterface $request, string $header ) : string Find out the client's IP address from the headers available to us

Method Details

__construct() public method

Constructor
public __construct ( boolean $checkProxyHeaders = false, array $trustedProxies = [], string $attributeName = null, array $headersToInspect = [] )
$checkProxyHeaders boolean Whether to use proxy headers to determine client IP
$trustedProxies array List of IP addresses of trusted proxies
$attributeName string Name of attribute added to ServerRequest object
$headersToInspect array List of headers to inspect

__invoke() public method

Set the "$attributeName" attribute to the client's IP address as determined from the proxy header (X-Forwarded-For or from $_SERVER['REMOTE_ADDR']
public __invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next ) : Psr\Http\Message\ResponseInterface
$request Psr\Http\Message\ServerRequestInterface PSR7 request
$response Psr\Http\Message\ResponseInterface PSR7 response
$next callable Next middleware
return Psr\Http\Message\ResponseInterface

determineClientIpAddress() protected method

Find out the client's IP address from the headers available to us
protected determineClientIpAddress ( Psr\Http\Message\ServerRequestInterface $request ) : string
$request Psr\Http\Message\ServerRequestInterface PSR-7 Request
return string

isValidIpAddress() protected method

Check that a given string is a valid IP address
protected isValidIpAddress ( string $ip ) : boolean
$ip string
return boolean

Property Details

$attributeName protected property

Name of the attribute added to the ServerRequest object
protected string $attributeName
return string

$checkProxyHeaders protected property

Defaults to false as only $_SERVER['REMOTE_ADDR'] is a trustworthy source of IP address.
protected bool $checkProxyHeaders
return boolean

$headersToInspect protected property

List of proxy headers inspected for the client IP address
protected array $headersToInspect
return array

$trustedProxies protected property

If not empty, then one of these IP addresses must be in $_SERVER['REMOTE_ADDR'] in order for the proxy headers to be looked at.
protected array $trustedProxies
return array