// identity ของแอป: mock login e-Court หน้า /login — อ่านจาก cookie "oacCase" // (userId = u_userid, userName = u_userlogin) แทน localStorage เดิม // ไฟล์นี้เป็น pure module — middleware (edge) และ client import ร่วมได้ ห้ามใส่ next/headers export type OacUser = { userId: string; userName: string }; export const OAC_CASE_COOKIE = "oacCase"; /** ผู้ใช้ mock หน้า /login (dropdown) — LoginForm (client) + action login (server) * ใช้ร่วมกันผ่าน module นี้กันสองที่ drift; รหัสผ่านกลาง Demo1234 อยู่ใน action */ export const MOCK_USERS: readonly string[] = [ "user1", "user2", "user3", "user4", "user5", ]; /** แยกค่า query string ของ cookie oacCase → identity * ขาด/ว่าง u_userid หรือ u_userlogin = ถือว่ายังไม่เข้าสู่ระบบ (null) * หมายเหตุ: Next (cookies().get / req.cookies.get) decode ค่า cookie กลับมาให้แล้ว * จึงส่งให้ URLSearchParams ตรง ๆ — ห้าม decodeURIComponent ซ้ำ */ export function parseOacCase(raw: string | null | undefined): OacUser | null { if (!raw) return null; const params = new URLSearchParams(raw); const userId = params.get("u_userid")?.trim(); const userName = params.get("u_userlogin")?.trim(); if (!userId || !userName) return null; return { userId, userName }; } /** ค่า cookie oacCase ตาม format จริงของ e-Court (ฟิลด์อื่นคงค่าจากตัวอย่างจริง) * mock login แทนเฉพาะ u_userid/u_userlogin */ export function buildOacCaseCookie(userId: string, userLogin: string): string { return [ `u_userid=${userId}`, `u_userlogin=${userLogin}`, "u_courtid=4", "u_password=", "u_AdminStatus=", "u_perCardNo=5000000000006", "u_perCardNoEncript=1800650010005002003", "u_userType=4", "u_CidAuthen=NNNENNNNNNNNNNNNNNNN", "u_hSecId=NNNNNNNNNNNNNNNNNNNN", "u_username=", "u_courtName=", "u_AuditID=1995227", "u_PsGroupNum=1", "u_PsGroup=11", "u_PsGroupName=", ].join("&"); }