Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ce071ee14 |
3 changed files with 16 additions and 18 deletions
|
|
@ -28,13 +28,13 @@ export async function POST(request: Request) {
|
||||||
if (!parsed.ok) return docverError(parsed.error, 400);
|
if (!parsed.ok) return docverError(parsed.error, 400);
|
||||||
|
|
||||||
// ความผิด config ฝั่ง server ไม่ใช่ความผิดของผู้เรียก — ไม่ตั้ง = 500 (ห้าม log ค่า secret)
|
// ความผิด config ฝั่ง server ไม่ใช่ความผิดของผู้เรียก — ไม่ตั้ง = 500 (ห้าม log ค่า secret)
|
||||||
// const secret = process.env.DOCVER_TOKEN_SECRET?.trim();
|
const secret = process.env.DOCVER_TOKEN_SECRET?.trim();
|
||||||
const secret =
|
// const secret =
|
||||||
"487023dd1c1c4d6a07475e96b1cc300fec1e68ac9c2dd7d5ac9b1bf75da1053e";
|
// "487023dd1c1c4d6a07475e96b1cc300fec1e68ac9c2dd7d5ac9b1bf75da1053e";
|
||||||
|
|
||||||
// if (secret === undefined || secret === "") {
|
if (secret === undefined || secret === "") {
|
||||||
// return docverError("DOCVER_TOKEN_SECRET ยังไม่ถูกตั้งค่า", 500);
|
return docverError("DOCVER_TOKEN_SECRET ยังไม่ถูกตั้งค่า", 500);
|
||||||
// }
|
}
|
||||||
const ttlRaw = Number(process.env.DOCVER_TOKEN_TTL_SECONDS);
|
const ttlRaw = Number(process.env.DOCVER_TOKEN_TTL_SECONDS);
|
||||||
const ttlSeconds =
|
const ttlSeconds =
|
||||||
Number.isFinite(ttlRaw) && ttlRaw > 0 ? Math.floor(ttlRaw) : 3600;
|
Number.isFinite(ttlRaw) && ttlRaw > 0 ? Math.floor(ttlRaw) : 3600;
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,6 @@ ENV DOCVER_LINK_TTL_SECONDS=900
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ─── Stage 3: runtime ตัวเบา (แค่ standalone + public/) ───
|
# ─── Stage 3: runtime ตัวเบา (แค่ standalone + public/) ───
|
||||||
FROM node:24-alpine AS runner
|
FROM node:24-alpine AS runner
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
|
||||||
|
|
@ -121,12 +121,12 @@ export function verifyDocverToken(
|
||||||
* คืน null เมื่อผ่าน / Response 401 เมื่อไม่ผ่าน */
|
* คืน null เมื่อผ่าน / Response 401 เมื่อไม่ผ่าน */
|
||||||
export function requireDocverApiKey(request: Request): Response | null {
|
export function requireDocverApiKey(request: Request): Response | null {
|
||||||
// เทียบกับค่า trim แล้ว — กัน trailing newline จาก K8s secret / docker env_file
|
// เทียบกับค่า trim แล้ว — กัน trailing newline จาก K8s secret / docker env_file
|
||||||
//const envKey = process.env.DOCVER_API_KEY?.trim();
|
const envKey = process.env.DOCVER_API_KEY?.trim();
|
||||||
const envKey =
|
// const envKey =
|
||||||
"2d9b76d49a4f5311f6a0dacf759ecec53f34b6d102f24c696890a4052c99cf54";
|
// "2d9b76d49a4f5311f6a0dacf759ecec53f34b6d102f24c696890a4052c99cf54";
|
||||||
// if (envKey === undefined || envKey === "") {
|
if (envKey === undefined || envKey === "") {
|
||||||
// return docverError("ระบบยังไม่ได้ตั้งค่า API key", 401);
|
return docverError("ระบบยังไม่ได้ตั้งค่า API key", 401);
|
||||||
// }
|
}
|
||||||
const provided = request.headers.get("x-api-key");
|
const provided = request.headers.get("x-api-key");
|
||||||
if (provided === null || provided === "") {
|
if (provided === null || provided === "") {
|
||||||
return docverError("API key ไม่ถูกต้อง", 401);
|
return docverError("API key ไม่ถูกต้อง", 401);
|
||||||
|
|
@ -150,10 +150,10 @@ export function requireDocverBearer(
|
||||||
): { ok: true; claims: DocverTokenClaims } | { ok: false; response: Response } {
|
): { ok: true; claims: DocverTokenClaims } | { ok: false; response: Response } {
|
||||||
const denied = () =>
|
const denied = () =>
|
||||||
({ ok: false, response: docverError(BEARER_DENIED, 401) }) as const;
|
({ ok: false, response: docverError(BEARER_DENIED, 401) }) as const;
|
||||||
//const secret = process.env.DOCVER_TOKEN_SECRET?.trim();
|
const secret = process.env.DOCVER_TOKEN_SECRET?.trim();
|
||||||
const secret =
|
// const secret =
|
||||||
"487023dd1c1c4d6a07475e96b1cc300fec1e68ac9c2dd7d5ac9b1bf75da1053e";
|
// "487023dd1c1c4d6a07475e96b1cc300fec1e68ac9c2dd7d5ac9b1bf75da1053e";
|
||||||
//if (secret === undefined || secret === "") return denied();
|
if (secret === undefined || secret === "") return denied();
|
||||||
const header = request.headers.get("authorization");
|
const header = request.headers.get("authorization");
|
||||||
if (header === null) return denied();
|
if (header === null) return denied();
|
||||||
const match = /^Bearer\s+(\S+)$/i.exec(header);
|
const match = /^Bearer\s+(\S+)$/i.exec(header);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue