Auth Middleware in Slim 4

Hi Odan,

Thank you very much, I have followed all your step’s as below, please correct me if ou find anything incorrect and now the earlier errors got resolved, and now a new error is occurring.

Error : Call to a member function withRedirect() on null
Code

use DI\Container;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
use Slim\Exception\NotFoundException;
use Slim\Exception\HttpNotFoundException;
use Slim\Routing\RouteCollectorProxy;
use Slim\Routing\RouteContext;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Selective\BasePath\BasePathDetector;
use Selective\BasePath\BasePathMiddleware;
require '../Slim4/vendor/autoload.php';

$builder = new DI\ContainerBuilder();
$container = $builder->build();
AppFactory::setContainer($container);
$container->set('view', function() { return Twig::create('../tpl', ['cache' => false]); });
$app = AppFactory::create();

$LoginauthMiddleware = function($request, $handler): ResponseInterface {
    $routeContext = RouteContext::fromRequest($request);
    $route = $routeContext->getRoute();
    if(empty($route)) { throw new NotFoundException($request, $response); }
    $routeName = $route->getName();
    $groups = $route->getGroups();
    $methods = $route->getMethods();
    $arguments = $route->getArguments();
    $publicRoutesArray = array('login', 'allow');
    if(empty($_SESSION['user']) && (!in_array($routeName, $publicRoutesArray))) {
       header("HTTP/1.1 302 Found");
       return $response->withRedirect('login');
    } else { $response = $handler->handle($request); }
    return $response;
};
$app->add($LoginauthMiddleware);
$app->addRoutingMiddleware();
$app->add(new BasePathMiddleware($app));
$app->add(TwigMiddleware::createFromContainer($app));
$app->addErrorMiddleware(true, true, true);

$app->get('/login', function($request, $response) use($app) {
      return $this->get('view')->render($response, 'page_login.html');
})->setName('login');