diff --git a/system/typemill/Middleware/SessionMiddleware.php b/system/typemill/Middleware/SessionMiddleware.php index 1914e6a..bb21251 100644 --- a/system/typemill/Middleware/SessionMiddleware.php +++ b/system/typemill/Middleware/SessionMiddleware.php @@ -14,18 +14,24 @@ class SessionMiddleware implements MiddlewareInterface protected $segments; protected $route; + + protected $uri; - public function __construct($segments, $route) + public function __construct($segments, $route, $uri) { $this->segments = $segments; $this->route = $route; + + $this->uri = $uri; } public function process(Request $request, RequestHandler $handler) :response { + $scheme = $request->getUri()->getScheme(); + # start session - Session::startSessionForSegments($this->segments, $this->route); + Session::startSessionForSegments($this->segments, $this->route, $scheme); $authenticated = ( (isset($_SESSION['username'])) && @@ -51,7 +57,6 @@ class SessionMiddleware implements MiddlewareInterface } } - $response = $handler->handle($request); return $response; diff --git a/system/typemill/Static/Session.php b/system/typemill/Static/Session.php index e0d3011..907378e 100644 --- a/system/typemill/Static/Session.php +++ b/system/typemill/Static/Session.php @@ -4,25 +4,25 @@ namespace Typemill\Static; class Session { - public static function startSessionForSegments($sessionSegments, $routepath) + public static function startSessionForSegments($sessionSegments, $routepath, $scheme) { + if(isset($_SESSION)) + { + return false; + } + $routepath = ltrim($routepath, '/'); foreach($sessionSegments as $segment) { - #echo '
' . $segment; - #echo '
' . $routepath; if(substr( $routepath, 0, strlen($segment) ) === ltrim($segment, '/')) { - #echo '
Create Session'; - # configure session ini_set('session.cookie_httponly', 1 ); ini_set('session.use_strict_mode', 1); ini_set('session.cookie_samesite', 'lax'); - /* - if($uri->getScheme() == 'https') + if($scheme == 'https') { ini_set('session.cookie_secure', 1); session_name('__Secure-typemill-session'); @@ -31,14 +31,15 @@ class Session { session_name('typemill-session'); } - */ # start session session_start(); -# break; + return true; } } + + return false; } public static function stopSession() diff --git a/system/typemill/system.php b/system/typemill/system.php index fe55eb4..833f226 100644 --- a/system/typemill/system.php +++ b/system/typemill/system.php @@ -336,7 +336,7 @@ $errorMiddleware->setErrorHandler(HttpNotFoundException::class, function ($reque $app->add($errorMiddleware); -$app->add(new SessionMiddleware($session_segments, $urlinfo['route'])); +$app->add(new SessionMiddleware($session_segments, $urlinfo['route'], $uri)); if(isset($settings['proxy']) && $settings['proxy']) {