Files
distribution_erp/src/app/api/auth/me/route.ts
T
chpark a7fa932f9f
Deploy momo-erp / deploy (push) Successful in 1m56s
feat(charter): 거래처별 기본 용차비 자동 셋팅 + 택배/용차 거래처 수정 차단
DB:
- user_info.default_charter_use (CHAR 'Y'/'N'), default_charter_price (INTEGER)
- /api/admin/users/detail: ALTER TABLE IF NOT EXISTS 로 자동 증설 + SELECT 노출
- /api/admin/users/save: 두 필드 UPDATE
- /api/auth/me: 로그인 사용자의 defaultCharterUse/Price 응답에 포함

UI:
- admin-panel/user-form: [기본 용차비 사용] 체크박스 + [금액] 입력 (사용 체크 시만 활성)
- /m/orders/new: 카트에 품목이 들어오는 순간 default_charter_use='Y' 거래처는 용차 라인 자동 추가
- /m/orders/new: 거래처는 카트 안 택배/용차 라인 수정/삭제 불가 (read-only 표시)
                [+ 택배 추가] [+ 용차 추가] 버튼도 admin 만 노출
- /m/orders DetailModal: canEditExtra=false 로 거래처 택배/용차 수정/삭제 차단
                          (출고관리 /m/admin/orders 에서만 수정 가능)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 22:42:55 +09:00

41 lines
1.6 KiB
TypeScript

import { NextResponse } from "next/server";
import { getSession } from "@/lib/session";
import { queryOne } from "@/lib/db";
export async function GET() {
const user = await getSession();
if (!user) {
return NextResponse.json({ success: false }, { status: 401 });
}
// 특수 권한 (발주한도 무시 / 숨김품목 보기) + 기본 용차비 설정 같이 내려줌.
// default_charter_* 컬럼이 운영DB 에 아직 없을 수 있어 try-catch 로 안전 처리.
let perms = { unlimitedQty: false, viewHidden: false, defaultCharterUse: false, defaultCharterPrice: 0 };
try {
const row = await queryOne<{ U: string; V: string; CU: string; CP: string }>(
`SELECT COALESCE(unlimited_qty, 'N') AS "U",
COALESCE(view_hidden, 'N') AS "V",
COALESCE(default_charter_use, 'N') AS "CU",
COALESCE(default_charter_price, 0)::text AS "CP"
FROM user_info WHERE user_id = $1`,
[user.userId]
);
if (row) perms = {
unlimitedQty: row.U === "Y",
viewHidden: row.V === "Y",
defaultCharterUse: row.CU === "Y",
defaultCharterPrice: Number(row.CP) || 0,
};
} catch {
// 컬럼이 없는 경우 폴백 — 기존 권한만 다시 조회
try {
const row = await queryOne<{ U: string; V: string }>(
`SELECT COALESCE(unlimited_qty, 'N') AS "U", COALESCE(view_hidden, 'N') AS "V"
FROM user_info WHERE user_id = $1`,
[user.userId]
);
if (row) perms = { ...perms, unlimitedQty: row.U === "Y", viewHidden: row.V === "Y" };
} catch { /* ignore */ }
}
return NextResponse.json({ success: true, user: { ...user, ...perms } });
}