Last Updated | | Ratings | | Unique User Downloads | | Download Rankings |
2018-04-08 (5 months ago) ![RSS 2.0 feed](/graphics/phpclasses/rss2.png) | | Not yet rated by the users | | Total: 196 | | All time: 8,155 This week: 272![Up](/graphics/phpclasses/up.png) |
|
Description | | Author |
This package can HTTP authentication using PSR-7 interfaces.
It uses PSR-7 interface implementation for request and response classes that will read the authentication request values and generates the necessary responses.
Separate classes implement the authentication of users from a file based database of user and password records.
It provides classes to check if the user is already logged in an authenticate him in case he isn't. Innovation Award
![PHP Programming Innovation award nominee PHP Programming Innovation award nominee](/award/innovation/nominee.gif) August 2017
Number 13 |
PSR-7 is a PHP standards recommendation for abstracting information sent and received via HTTP requests.
This package implements a user authentication system that abstracts the way HTTP request and response headers are sent and received, so it can work with many different Web server architectures.
Manuel Lemos |
| |
![Picture of Payam Naderi Picture of Payam Naderi](/graphics/unknown.gif) |
|
Innovation award
![Innovation award](/graphics/phpclasses/innovation-award-logo.png) Nominee: 2x |
|
Details
Poirot\AuthSystem
HTTP authentication using PSR-7 interfaces.
It uses PSR-7 interface implementation for request and response classes that will read the authentication request values and generates the necessary responses.
Separate classes implement the authentication of users from a file based database of user and password records.
It provides classes to check if the user is already logged in an authenticate him in case he isn't.
Overview usage sample
$request = new HttpRequest(new PhpServerRequestBuilder);
$response = new HttpResponse(new PhpServerResponseBuilder);
$lazyLoad = new LazyFulfillmentIdentity(['fulfillment_by' => 'username', 'data_provider' => new UserData]);
$auth = new Authenticator\HttpSessionAuth([
'identity' => $lazyLoad,
'request' => $request,
'response' => $response,
]);
try {
$credential = null;
## check user has authenticated
login_user:
$auth->authenticate($credential);
echo 'Continue ...';
if (!$auth->isSignIn()) {
$auth->signIn();
header('Location: '.$request->getUri()->getPath()->toString());
die();
}
} catch (WrongCredentialException $e) {
throw new \Exception('Invalid Username or Password.');
} catch (UserNotFoundException $e) {
throw new \Exception('Invalid Username or Password.');
} catch (AuthenticationException $e)
{
if ($e->getAuthenticator() instanceof Authenticator\HttpSessionAuth)
{
### handle login with satisfy request
if ($request->plg()->methodType()->isPost()) {
$credential = new UserPassCredential($request->plg()->phpServer()->getPost());
goto login_user;
}
### challenge user with login form, redirection or etc.
$response->setBody('
<form method="post" action="" enctype="application/x-www-form-urlencoded">
<input type="text" name="email">
<input type="password" name="password">
<input type="submit" value="send">
</form>
<p>Please Login ...</p>
');
}
}
## run rest of program
if ($auth->hasAuthenticated()) {
$response->setBody("<h1>Hello User {$auth->identity()->getEmail()}</h1>");
}
### send response
$response->flush();
TODO
- Aggregate Authenticator
- Aggregate Adapter
- Write Authentication Service Layer On Top Of Adapters For Application Dispatching Control
|
Applications that use this package |
|
No pages of applications that use this class were specified.
If you know an application of this package, send a message to the author to add a link here.