a7fa932f9f
Deploy momo-erp / deploy (push) Successful in 1m56s
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>
41 lines
1.6 KiB
TypeScript
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 } });
|
|
}
|