Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save batazo/5f9646c21c6daea98871019263c9d0f5 to your computer and use it in GitHub Desktop.

Select an option

Save batazo/5f9646c21c6daea98871019263c9d0f5 to your computer and use it in GitHub Desktop.
Slim 4 - Authentication middleware (with TOKEN)
<?php
namespace App\Controllers\Tests;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
//use Slim\Psr7\Response;
use Slim\Views\PhpRenderer;
public function getT(Request $request, Response $response, $args) {
//$name = $args['name'];
$data = Array(
'Access' => $request->getAttribute('Access'),
'UserDatas' => $request->getAttribute('UserDatas')
);
$templateVariables = [
'data' => $data
];
$renderer = new PhpRenderer('../private/src/Views', $templateVariables);
return $renderer->render($response, "jsonView.php", $args);
}
}
<?php
namespace App\Middleware;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Server\MiddlewareInterface;
use Slim\Psr7\Response;
use Slim\Views\PhpRenderer;
//use Slim\Routing\RouteContext;
//Test before middleware
class testMiddleware
{
public function __invoke(Request $request, RequestHandler $handler): ResponseInterface
{
$response = new Response();
$headers = getallheaders();
if(isset($headers['Authorization'])){
$user_token = filter_var(substr($headers['Authorization'], 7), FILTER_SANITIZE_STRING);
}
if($user_token === '123456789123456789'){
$userdatas = Array(
'id' => 100,
'UserName' => 'DummyUser',
'UserAvatar' => null
);
$request = $request->withAttribute('Access', 'Allowed');
$request = $request->withAttribute('UserDatas', $userdatas);
return $handler->handle($request);
} else {
$data = Array(
'Access' => 'DENIED',
'UserDatas' => 'DENIED'
);
$data = json_encode($data);
$response->getBody()->write($data);
$response = $response->withHeader('Content-Type', 'application/json')
->withStatus(401);
//$templateVariables = [
// 'data' => $data
//];
//$renderer = new PhpRenderer('../private/src/Views', $templateVariables);
//return $renderer->render($response->withStatus(401), "jsonView.php");
}
return $response;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment