37 lines
947 B
PHP
37 lines
947 B
PHP
<?php namespace Clockwork\Web;
|
|
|
|
// Helper class for serving app assets
|
|
class Web
|
|
{
|
|
// Return the absolute path and a mime type of an asset, protects from accessing files outside Clockwork public dir
|
|
public function asset($path)
|
|
{
|
|
$path = $this->resolveAssetPath($path);
|
|
|
|
if (! $path) return;
|
|
|
|
switch (pathinfo($path, PATHINFO_EXTENSION)) {
|
|
case 'css': $mime = 'text/css'; break;
|
|
case 'js': $mime = 'application/javascript'; break;
|
|
case 'json': $mime = 'application/json'; break;
|
|
case 'png': $mime = 'image/png'; break;
|
|
default: $mime = 'text/html'; break;
|
|
}
|
|
|
|
return [
|
|
'path' => $path,
|
|
'mime' => $mime
|
|
];
|
|
}
|
|
|
|
// Resolves absolute path of the asset, protects from accessing files outside Clockwork public dir
|
|
protected function resolveAssetPath($path)
|
|
{
|
|
$publicPath = realpath(__DIR__ . '/public');
|
|
|
|
$path = realpath("$publicPath/{$path}");
|
|
|
|
return strpos($path, $publicPath) === 0 ? $path : false;
|
|
}
|
|
}
|