1
0

Added a proxy for use with index.php/$1 and rewrote redirects to work with sgni.nl

This commit is contained in:
Christiaan Goossens 2017-03-29 17:09:21 +02:00
parent 1f9f6478e6
commit cb4a743c2a
8 changed files with 131 additions and 26 deletions

View File

@ -13,6 +13,8 @@
"start": "php -S 0.0.0.0:8080" "start": "php -S 0.0.0.0:8080"
}, },
"autoload": { "autoload": {
"psr-4": {"Inforbank\\": "src/"} "psr-4": {
"Inforbank\\": "src/"
}
} }
} }

13
composer.lock generated
View File

@ -276,23 +276,24 @@
}, },
{ {
"name": "slim/slim", "name": "slim/slim",
"version": "3.7.0", "version": "3.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/slimphp/Slim.git", "url": "https://github.com/slimphp/Slim.git",
"reference": "4254e40d81559e35cdf856bcbaca5f3af468b7ef" "reference": "5385302707530b2bccee1769613ad769859b826d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/slimphp/Slim/zipball/4254e40d81559e35cdf856bcbaca5f3af468b7ef", "url": "https://api.github.com/repos/slimphp/Slim/zipball/5385302707530b2bccee1769613ad769859b826d",
"reference": "4254e40d81559e35cdf856bcbaca5f3af468b7ef", "reference": "5385302707530b2bccee1769613ad769859b826d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"container-interop/container-interop": "^1.1", "container-interop/container-interop": "^1.2",
"nikic/fast-route": "^1.0", "nikic/fast-route": "^1.0",
"php": ">=5.5.0", "php": ">=5.5.0",
"pimple/pimple": "^3.0", "pimple/pimple": "^3.0",
"psr/container": "^1.0",
"psr/http-message": "^1.0" "psr/http-message": "^1.0"
}, },
"provide": { "provide": {
@ -342,7 +343,7 @@
"micro", "micro",
"router" "router"
], ],
"time": "2016-12-20T20:30:47+00:00" "time": "2017-03-19T17:55:20+00:00"
}, },
{ {
"name": "vrana/notorm", "name": "vrana/notorm",

View File

@ -28,7 +28,7 @@ class Middleware
return $next($request, $response); return $next($request, $response);
} else { } else {
// Redirect to the login page // Redirect to the login page
return Redirect::create($response, '/login'); return Redirect::create($request, $response, '/login');
} }
} }
} }

View File

@ -16,20 +16,11 @@ namespace Inforbank\Application\Helper;
class Redirect class Redirect
{ {
public static function create($response, $path) public static function create($request, $response, $path)
{ {
$basePath = $request->getUri()->getBaseUrl();
$response = $response->withStatus(302); $response = $response->withStatus(302);
$response = $response->withHeader('Location', Redirect::getBasepath() . $path); $response = $response->withHeader('Location', $basePath . $path);
return $response; return $response;
} }
private static function getBasepath()
{
if (isset($_SERVER['HTTPS'])) {
$protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
} else {
$protocol = 'http';
}
return $protocol . "://" . $_SERVER['HTTP_HOST'];
}
} }

View File

@ -34,18 +34,18 @@ class Login
$resp = $this->auth->login($post['rekeningnr'], $post['pascode']); $resp = $this->auth->login($post['rekeningnr'], $post['pascode']);
if ($resp) { if ($resp) {
return Redirect::create($response, '/'); return Redirect::create($request, $response, '/');
} else { } else {
return Redirect::create($response, '/login?error'); return Redirect::create($request, $response, '/login?error');
} }
} catch (\Exception $e) { } catch (\Exception $e) {
return Redirect::create($response, '/login?error'); return Redirect::create($request, $response, '/login?error');
} }
}); });
$app->get('/logout', function ($request, $response, $args) { $app->get('/logout', function ($request, $response, $args) {
$this->auth->logout(); $this->auth->logout();
return Redirect::create($response, '/login'); return Redirect::create($request, $response, '/login');
}); });
} }
} }

108
src/Proxy.php Normal file
View File

@ -0,0 +1,108 @@
<?php
/**
* Informatica Eindproject D4p
* 6in3, Stedelijk Gymnasium Nijmegen
* Docent: Hans de Wolf
*
* ==================
*
* Daniel Boutros,
* Christiaan Goossens,
* Jelmer Hinssen
*/
namespace Inforbank;
use Bat\MimeTypeTool;
class Proxy
{
public function __invoke($request, $response, $next)
{
$uri = $request->getUri();
$path = $uri->getPath();
if (strpos($path, 'assets/') !== false) {
if (file_exists($path)) {
$ext = pathinfo($path, PATHINFO_EXTENSION);
$ext2Mime = array(
'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',
// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',
// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',
// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);
if (array_key_exists($ext, $ext2Mime)) {
$mime = $ext2Mime[$ext];
} else {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (false !== ($_mime = finfo_file($finfo, $path))) {
$mime = $_mime;
}
finfo_close($finfo);
}
header('Content-Type: ' . $mime);
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
exit;
} else {
return $next($request, $response);
}
}
return $next($request, $response);
}
}

View File

@ -130,5 +130,8 @@ new Inforbank\Application\API\Handler($app);
* - http://php.net/manual/en/language.oop5.basic.php (over de class) * - http://php.net/manual/en/language.oop5.basic.php (over de class)
*/ */
// Add the asset Proxy
$app->add(new Inforbank\Proxy());
// Run app // Run app
$app->run(); $app->run();

View File

@ -17,14 +17,14 @@
echo " " . $klant['tussenvoegsel']; echo " " . $klant['tussenvoegsel'];
} }
?> <?= $klant['achternaam'] ?><br/> ?> <?= $klant['achternaam'] ?><br/>
<a href="/logout">Uitloggen</a> <a href="logout">Uitloggen</a>
</div> </div>
</div> </div>
</div> </div>
<div class="menu"> <div class="menu">
<div class="container"> <div class="container">
<ul class="nv"> <ul class="nv">
<li><a href="/">Rekeningen</a></li> <li><a href="rekeningen">Rekeningen</a></li>
</ul> </ul>
</div> </div>
</div> </div>