mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-02-25 00:35:16 +08:00
32 lines
740 B
PHP
32 lines
740 B
PHP
![]() |
<?php
|
||
|
|
||
|
namespace BookStack\Theming;
|
||
|
|
||
|
use BookStack\Facades\Theme;
|
||
|
use BookStack\Http\Controller;
|
||
|
use BookStack\Util\FilePathNormalizer;
|
||
|
|
||
|
class ThemeController extends Controller
|
||
|
{
|
||
|
/**
|
||
|
* Serve a public file from the configured theme.
|
||
|
*/
|
||
|
public function publicFile(string $theme, string $path)
|
||
|
{
|
||
|
$cleanPath = FilePathNormalizer::normalize($path);
|
||
|
if ($theme !== Theme::getTheme() || !$cleanPath) {
|
||
|
abort(404);
|
||
|
}
|
||
|
|
||
|
$filePath = theme_path("public/{$cleanPath}");
|
||
|
if (!file_exists($filePath)) {
|
||
|
abort(404);
|
||
|
}
|
||
|
|
||
|
$response = $this->download()->streamedFileInline($filePath);
|
||
|
$response->setMaxAge(86400);
|
||
|
|
||
|
return $response;
|
||
|
}
|
||
|
}
|