53 lines
2.3 KiB
TypeScript
53 lines
2.3 KiB
TypeScript
// 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("&");
|
|
}
|