for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Jalle19\ReactHttpStatic\Authentication\Handler;
use React\Http\Request;
use React\Http\Response;
/**
* Class Basic
* @package Jalle19\ReactHttpStatic\Authentication\Handler
* @copyright Copyright © Sam Stenvall 2016-
* @license @license https://opensource.org/licenses/MIT
*/
class Basic implements HandlerInterface
{
* @var string
private $realm;
* @var callable
private $implementation;
* @param callable $implementation
* @param string $realm
public function __construct($realm, $implementation)
$this->realm = $realm;
$this->implementation = $implementation;
}
* @inheritdoc
public function handle(Request $request)
$headers = $request->getHeaders();
if (array_key_exists('Authorization', $headers)) {
$authorization = $headers['Authorization'];
if (substr($authorization, 0, strlen('Basic ')) !== 'Basic ') {
return false;
$authentication = base64_decode(substr($authorization, strlen('Basic ')));
$parts = explode(':', $authentication);
if (count($parts) !== 2) {
return call_user_func($this->implementation, $parts[0], $parts[1]);
public function requireAuthentication(Response $response)
$response->writeHead(401, [
'WWW-Authenticate' => 'Basic realm="' . $this->realm . '"',
]);
$response->end();