1
0
mirror of https://github.com/typemill/typemill.git synced 2025-08-03 20:57:38 +02:00

moved assets to middleware for proxy detection

This commit is contained in:
trendschau
2020-10-18 08:50:58 +02:00
parent 1e6c42c98a
commit a3167a26ee
15 changed files with 183 additions and 83 deletions

View File

@@ -42,23 +42,19 @@ if($settings['settings']['displayErrorDetails'])
$app = new \Slim\App($settings);
/************************
* ADD PROXY DETECTION *
************************/
if(isset($settings['settings']['proxy']) && $settings['settings']['proxy'])
{
$trustedProxies = ( isset($settings['settings']['trustedproxies']) && !empty($settings['settings']['trustedproxies']) ) ? explode(",", $settings['settings']['trustedproxies']) : [];
$app->add(new RKA\Middleware\ProxyDetection($trustedProxies));
}
/************************
* GET SLIM CONTAINER *
************************/
$container = $app->getContainer();
/************************
* Create URI *
************************/
# get uri and delete username and password from uri
$uri = \Slim\Http\Uri::createFromEnvironment(new \Slim\Http\Environment($_SERVER))->withUserInfo('');
/************************
* LOAD & UPDATE PLUGINS *
************************/
@@ -157,20 +153,6 @@ $container['dispatcher'] = function($container) use ($dispatcher)
return $dispatcher;
};
# delete username and password from uri
$uri = $container['request']->getUri()->withUserInfo('');
define("TM_BASE_URL", $uri->getBaseUrl());
/********************************
* ADD ASSET-FUNCTION FOR TWIG *
********************************/
$container['assets'] = function($c) use ($uri)
{
return new \Typemill\Assets($uri->getBaseUrl());
};
/************************
* DECIDE FOR SESSION *
************************/
@@ -181,20 +163,32 @@ $session_segments = array('setup', 'tm/', 'api/', '/setup', '/tm/', '/api/');
$client_segments = $dispatcher->dispatch('onSessionSegmentsLoaded', new OnSessionSegmentsLoaded([]))->getData();
$session_segments = array_merge($session_segments, $client_segments);
$path = $uri->getPath();
$container['flash'] = false;
$container['csrf'] = false;
/************************************
* ADD ASSET-FUNCTION FOR PLUGINS *
************************************/
$container['assets'] = function($c) use ($uri)
{
return new \Typemill\Assets($uri->getBaseUrl());
};
/********************************
* MOVE TO MIDDLEWARE NEXT TIME *
********************************/
# if website is restricted to registered user
if(isset($settings['settings']['access']) && $settings['settings']['access'] == 'registered')
{
# activate session for all routes
$session_segments = [$path];
$session_segments = [$uri->getPath()];
}
foreach($session_segments as $segment)
{
if(substr( $path, 0, strlen($segment) ) === $segment)
if(substr( $uri->getPath(), 0, strlen($segment) ) === $segment)
{
// configure session
ini_set('session.cookie_httponly', 1 );
@@ -245,9 +239,13 @@ $container['view'] = function ($container) use ($uri)
'debug' => true
]);
// Instantiate and add Slim specific extension
$basePath = rtrim(str_ireplace('index.php', '', $uri->getBasePath()), '/');
$view->addExtension(new Slim\Views\TwigExtension($container['router'], $basePath));
# Instantiate and add Slim specific extension
$router = $container->get('router');
# $basePath = rtrim(str_ireplace('index.php', '', $uri->getBasePath()), '/');
# $view->addExtension(new Slim\Views\TwigExtension($container['router'], $basePath));
$view->addExtension(new Slim\Views\TwigExtension($router, $uri));
$view->addExtension(new Twig_Extension_Debug());
$view->addExtension(new Typemill\Extensions\TwigUserExtension());
$view->addExtension(new Typemill\Extensions\TwigMarkdownExtension());
@@ -255,34 +253,27 @@ $container['view'] = function ($container) use ($uri)
$view->addExtension(new Typemill\Extensions\TwigPagelistExtension());
# use {{ base_url() }} in twig templates
$view['base_url'] = $uri->getBaseUrl();
$view['current_url'] = $uri->getPath();
# $view['base_url'] = $uri->getBaseUrl();
# $view['current_url'] = $uri->getPath();
/* if session route, add flash messages and csrf-protection */
# if session route, add flash messages and csrf-protection
if($container['flash'])
{
$view->getEnvironment()->addGlobal('flash', $container->flash);
$view->addExtension(new Typemill\Extensions\TwigCsrfExtension($container['csrf']));
}
/* add asset-function to all views */
$view->getEnvironment()->addGlobal('assets', $container->assets);
/******************************
* LOAD TRANSLATIONS *
******************************/
$uri = $_SERVER['REQUEST_URI'];
$base_path = $container['request']->getUri()->getBasePath();
$uri = str_replace($base_path,'',$uri);
$pieces = explode('/',$uri);
if(isset($uri) && ($pieces[1] === 'tm' OR $pieces[1] === 'setup') )
$pieces = explode('/',$uri->getPath());
if( ($pieces[0] === 'tm' OR $pieces[0] === 'setup') )
{
// Admin environment labels
# Admin environment labels
$labels = Typemill\Translations::loadTranslations('admin');
} else {
// User environment labels
// For now it is useless, but it will prove useful in the future
# User environment labels
# For now it is useless, but it will prove useful in the future
$labels = Typemill\Translations::loadTranslations('user');
}
$view['translations'] = $labels;
@@ -291,7 +282,7 @@ $container['view'] = function ($container) use ($uri)
return $view;
};
$container->dispatcher->dispatch('onTwigLoaded');
# $container->dispatcher->dispatch('onTwigLoaded');
/***************************
* ADD NOT FOUND HANDLER *
@@ -323,6 +314,22 @@ if($container['flash'])
$app->add($container->get('csrf'));
}
/********************************
* ASSET MIDDLEWARE FOR TWIG *
********************************/
$app->add(new \Typemill\Middleware\assetMiddleware($container));
/********************************
* PROXY DETECTION FOR REQUEST *
********************************/
if(isset($settings['settings']['proxy']) && $settings['settings']['proxy'])
{
$trustedProxies = ( isset($settings['settings']['trustedproxies']) && !empty($settings['settings']['trustedproxies']) ) ? explode(",", $settings['settings']['trustedproxies']) : [];
$app->add(new RKA\Middleware\ProxyDetection($trustedProxies));
}
/************************
* ADD ROUTES *
************************/