Middleware System

The middleware layer is responsible for intercepting requests and determining access:

Access Control Flow

/**
 * Handle an incoming request.
 */
public function handle(Request $request, Closure $next): Response
{
    $canAccess = Curtain::canAccessPath($request);

    if ($canAccess) {
        return $next($request);
    }

    return Curtain::render();
}
/**
 * Check if a request should be allowed through maintenance mode.
 *
 * @param  Request  $request  The HTTP request
 * @return bool True if request should be allowed
 */
public function canAccessPath(Request $request): bool
{
    if (! $this->isDownForMaintenance()) {
        return true;
    }

    if ($this->shouldPassThroughPath($request->path())) {
        return true;
    }

    if ($this->isAllowedIp($request->ip())) {
        return true;
    }

    return $this->hasValidBypassToken($request);
}

Access Control Hierarchy

  • IP Whitelist Check

  • Excluded Paths Check

  • Bypass Token Check

  • Default: Show maintenance page

Last updated