use App\AccessLog;
use App\PdfFile;
+use Cubist\Util\Files\Files;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
{
-
/**
* @param PdfFile $file
* @param Request $request
- * @return RedirectResponse|View
+ * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response|object
* @throws \Illuminate\Auth\Access\AuthorizationException
* Auth'd route
*/
- public function view(PdfFile $file, Request $request)
+ public function view(PdfFile $file, string $path = '')
{
-$file->getFluidbookPath();
+ // Add trailing slash if needed
+ $request = request();
+ if ($request->getPathInfo() === '/view/' . $file->slug) {
+ $uri = str_replace('/view/' . $file->slug, '/view/' . $file->slug . '/index.html', $request->getRequestUri());
+ return redirect($uri);
+ }
+
+ $path = ltrim($path, '/');
+ if (!$path) {
+ $path = 'index.html';
+ }
+ $pathname = $file->getFluidbookPath($path);
+ return XSendFileController::sendfile($pathname);
+
}
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
- $response->setContent(':/');
return $response->header('X-Sendfile', $path);
}
public function getFluidbookPath($path = '')
{
$base = \Cubist\Util\Files\Files::mkdir(storage_path('fluidbook/' . $this->slug . '/'));
- if (!$path) {
- $path = 'index.html';
- }
- $pathname = $base . $path;
- $res = XSendFileController::sendfile($pathname);
- return $res;
+ return $base . $path;
}
/**
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
- # Redirect Trailing Slashes If Not A Folder...
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_URI} (.+)/$
- RewriteRule ^ %1 [L,R=301]
+# # Redirect Trailing Slashes If Not A Folder...
+# RewriteCond %{REQUEST_FILENAME} !-d
+# RewriteCond %{REQUEST_URI} (.+)/$
+# RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
/** Fluidbook viewer */
Route::middleware(['login.token', 'authed.verified'])
- ->get('/view/{file:slug}', 'FluidbookController@view')
+ ->get('/view/{file:slug}/{path?}', 'FluidbookController@view')
+ ->where('path', '.*')
->name('fluidbook.view');
Route::get('edition/{file:slug}', 'FileController@show');