<?php

namespace App\Middleware;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Slim\Routing\RouteContext;
use Slim\Psr7\Response;

class LoginAuthMiddleware
{
    public function __invoke(ServerRequestInterface $request,
                             RequestHandlerInterface $handler): Response
    {
	$routeContext = RouteContext::fromRequest($request);
	$route = $routeContext->getRoute();
	session_start();
	if(empty($route)) { throw new NotFoundException($request, $response); }
	$routeName = $request->getUri()->getPath();
	/* echo var_dump($routeName); */
	$groups = $route->getGroups();
	$methods = $route->getMethods();
	$arguments = $route->getArguments();
	$_SESSION['routeName'] = $routeName;
	$publicRoutesArray = array('/ui/login', 'allow');
	if(empty($_SESSION['user']['name']) && ($routeName != "/ui/login")) {
	    $responseFactory = new \Slim\Psr7\Factory\ResponseFactory();
	    $response = $responseFactory->createResponse(200);
	    /* header("HTTP/1.1 302 Found"); */
	    /* return $response->withRedirect('/ui/login'); */
	    
	    return $response->withStatus(302)->withHeader('Location', '/ui/login');
	} else { $response = $handler->handle($request); }
	return $response;
    }
}

# end of file
