24 lines
1 KiB
TypeScript
24 lines
1 KiB
TypeScript
import { NextResponse, type NextRequest } from "next/server";
|
|
|
|
import { OAC_CASE_COOKIE, parseOacCase } from "@/utils/user";
|
|
|
|
// บังคับ login (mock e-Court) ทุกหน้า — ไม่มี cookie oacCase ที่ parse ได้ = redirect /login
|
|
// (parse จริง ไม่ใช่แค่มี cookie — cookie ขยะ/ครึ่ง ๆ ถือว่ายังไม่เข้าสู่ระบบ)
|
|
export function middleware(req: NextRequest) {
|
|
const user = parseOacCase(req.cookies.get(OAC_CASE_COOKIE)?.value);
|
|
if (!user) {
|
|
const url = req.nextUrl.clone();
|
|
url.pathname = "/login";
|
|
url.search = "";
|
|
return NextResponse.redirect(url);
|
|
}
|
|
return NextResponse.next();
|
|
}
|
|
|
|
// ยกเว้น: หน้า login เอง, API/SSE/export, ไฟล์อัปโหลด, Next internal,
|
|
// และ static ใน public/ (pdf.worker, samples, fonts, favicon)
|
|
export const config = {
|
|
matcher: [
|
|
"/((?!login|api|uploads|_next|samples|fonts|pdf\\.worker\\.min\\.mjs|favicon\\.ico).*)",
|
|
],
|
|
};
|