BookStackApp/BookStack

View on GitHub
app/Http/Middleware/StartSessionExtended.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace BookStack\Http\Middleware;

use Illuminate\Http\Request;
use Illuminate\Session\Middleware\StartSession as Middleware;

/**
 * An extended version of the default Laravel "StartSession" middleware
 * with customizations applied as required:
 *
 * - Adds filtering for the request URLs stored in session history.
 */
class StartSessionExtended extends Middleware
{
    protected static array $pathPrefixesExcludedFromHistory = [
        'uploads/images/'
    ];

    /**
     * @inheritdoc
     */
    protected function storeCurrentUrl(Request $request, $session): void
    {
        $requestPath = strtolower($request->path());
        foreach (static::$pathPrefixesExcludedFromHistory as $excludedPath) {
            if (str_starts_with($requestPath, $excludedPath)) {
                return;
            }
        }

        parent::storeCurrentUrl($request, $session);
    }
}