임동욱 임동욱 08-21
Merge branch 'claude/admin-member-list-design-b1fec7' into hub
@842bac8c4251ae8dde2e7f7369366280fd677167
lib/domain/file-module.ts
--- lib/domain/file-module.ts
+++ lib/domain/file-module.ts
@@ -18,12 +18,12 @@
 };
 
 /**
- * 업로드 전체에 걸린 확장자 화이트리스트 — 백엔드 `Globals.fileUpload.Extensions`.
- * `EgovMultipartResolver`가 저장소 설정보다 **먼저** 이 목록으로 거른다.
+ * 백엔드 `Globals.fileUpload.Extensions`의 사본 — 확장자를 못 받은 저장소의 잠정값으로만 쓴다.
  *
- * 이슈: 저장소 설정이 허용해도 여기 없으면 못 올린다. `MODULE_VOD_CONTENT`는 mov·avi·mkv·
- *   webm·wmv를 허용하지만 실제로 통과하는 것은 mp4뿐이고, svg도 마찬가지로 막힌다.
- *   백엔드에 이 목록 확장을 요청하면 그때 여기만 늘리면 된다.
+ * 실제 업로드를 막는 것은 이 목록이 아니라 저장소 설정의 `PRM_FILE_EXTN`이다
+ * (`EgovFileMngUtil.checkAllowFileExtension`). `EgovMultipartResolver`도 이 목록을 보긴 하지만
+ * 어긋났을 때 던지는 `SecurityException`이 주석 처리돼 있어 실제로는 로그만 남는다.
+ * 그래서 저장소가 허용하는 확장자를 이 목록으로 다시 거르면 안 된다 — svg가 그렇게 막혔다.
  */
 export const GLOBAL_UPLOAD_EXTENSIONS: readonly string[] = [
   'gif', 'jpg', 'jpeg', 'png',
@@ -50,8 +50,8 @@
   vodContent: {
     id: 'MODULE_VOD_CONTENT',
     description: '동영상 콘텐츠 저장소',
-    // 이슈: 백엔드 전역 화이트리스트(Globals.fileUpload.Extensions)에 영상은 mp4뿐이다.
-    // mov·avi 등은 목록에 추가되면 여기도 되돌린다.
+    // TODO: 저장소 표는 mov·avi·mkv·webm·wmv도 허용하지만 실제 통과 여부를 확인하지 못해
+    // mp4로 좁혀 둔 상태다. 확인되면 표대로 되돌린다.
     extensions: ['mp4'],
   },
   /** 꾸미기 아이템 썸네일. */
@@ -91,11 +91,9 @@
 } as const satisfies Record<string, FileModule>;
 
 
-/** 실제로 통과하는 확장자 — 저장소 설정과 전역 화이트리스트의 교집합이다. */
+/** 실제로 통과하는 확장자 — 판단 기준은 저장소 설정 하나뿐이다. */
 export function allowedExtensions(module: FileModule): string[] {
-  return module.extensions.filter((extension) =>
-    GLOBAL_UPLOAD_EXTENSIONS.includes(extension)
-  );
+  return [...module.extensions];
 }
 
 /** 확장자 목록 → `<input accept>` 값. 화면이 백엔드 허용 목록을 직접 베끼지 않게 한다. */
Add a comment
List