PHP code example of portier / client
1. Go to this page and download the library: Download portier/client library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once ('vendor/autoload.php' );
portier / client example snippets
= \Slim\Factory\AppFactory::create();
$app->addRoutingMiddleware();
$app->addErrorMiddleware(true , true , true );
$redis = new Redis();
$redis->pconnect('127.0.0.1' , 6379 );
$portier = new \Portier\Client\Client(
new \Portier\Client\RedisStore($redis),
'http://localhost:8000/verify'
);
$app->get('/' , function ($req, $res) {
$res = $res
->withStatus(200 )
->withHeader('Content-Type' , 'text/html; charset=utf-8' );
$res->getBody()->write(
<<<EOF
<p>Enter your email address:</p>
<form method="post" action="/auth">
<input name="email" type="email">
<button type="submit">Login</button>
</form>
EOF
);
return $res;
});
$app->post('/auth' , function ($req, $res) use ($portier) {
$authUrl = $portier->authenticate($req->getParsedBody()['email' ]);
return $res
->withStatus(303 )
->withHeader('Location' , $authUrl);
});
$app->post('/verify' , function ($req, $res) use ($portier) {
$email = $portier->verify($req->getParsedBody()['id_token' ]);
$res = $res
->withStatus(200 )
->withHeader('Content-Type' , 'text/html; charset=utf-8' );
$res->getBody()->write(
<<<EOF
<p>Verified email address ${email}!</p>
EOF
);
return $res;
});
$app->run();