Files
FictionArchive/fictionarchive-web-astro/src/middleware.ts
gamer147 e70c39ea75
All checks were successful
CI / build-backend (pull_request) Successful in 1m45s
CI / build-frontend (pull_request) Successful in 39s
[FA-misc] Refresh button, UI mostly gold
2025-12-09 09:11:39 -05:00

29 lines
782 B
TypeScript

import { defineMiddleware } from 'astro:middleware';
const STATIC_PATHS = ['/_astro/', '/favicon.svg', '/favicon.ico'];
const AUTH_BYPASS_PATHS = ['/gated-404'];
export const onRequest = defineMiddleware(async (context, next) => {
const { request, url } = context;
// Bypass auth for static assets
if (STATIC_PATHS.some((p) => url.pathname.startsWith(p))) {
return next();
}
// Bypass auth for gated pages to prevent redirect loops
if (AUTH_BYPASS_PATHS.includes(url.pathname)) {
return next();
}
// Simple presence check for fa_session cookie
const cookieHeader = request.headers.get('cookie') || '';
const hasSession = /fa_session=[^;]+/.test(cookieHeader);
if (hasSession) {
return next();
}
return context.rewrite('/gated-404');
});