users = $users; $this->login_url = $login_url; $this->login = $service; } public function __invoke(Request $request, Handler $handler): Response { $response = $handler->handle($request); $is_logged_in = $this->login->checkAuth($request); if (!$is_logged_in and $request->getRequestTarget() != $this->login_url and $request->getRequestTarget() != implode('/', [dirname($this->login_url), 'logout'])) { return $response ->withHeader('Location', $this->login_url) ->withStatus(301); } return $response; } }