관리자 업로드 제한 설정 추가

This commit is contained in:
2026-07-01 17:58:30 +09:00
parent 129b68b939
commit e5d3eac2fd
17 changed files with 308 additions and 20 deletions

View File

@@ -35,6 +35,16 @@ import {
MIN_DISPLAY_COUNT,
normalizeDisplayCount
} from '../../lib/display-count-settings.js'
import {
DEFAULT_UPLOAD_MAX_FILE_COUNT,
DEFAULT_UPLOAD_MAX_TOTAL_SIZE,
MAX_UPLOAD_MAX_FILE_COUNT,
MAX_UPLOAD_MAX_TOTAL_SIZE,
MIN_UPLOAD_MAX_FILE_COUNT,
MIN_UPLOAD_MAX_TOTAL_SIZE,
normalizeUploadMaxFileCount,
normalizeUploadMaxTotalSize
} from '../../lib/upload-size-limit.js'
export const adminSiteSettingsInputSchema = z.object({
title: z.string().trim().min(1),
@@ -52,6 +62,8 @@ export const adminSiteSettingsInputSchema = z.object({
tagPostListPageSize: z.coerce.number().int().min(MIN_DISPLAY_COUNT).max(MAX_DISPLAY_COUNT).optional().default(DEFAULT_TAG_POST_LIST_PAGE_SIZE),
featuredPostLimit: z.coerce.number().int().min(MIN_DISPLAY_COUNT).max(MAX_DISPLAY_COUNT).optional().default(DEFAULT_FEATURED_POST_LIMIT),
pageSectionItemLimit: z.coerce.number().int().min(MIN_DISPLAY_COUNT).max(MAX_DISPLAY_COUNT).optional().default(DEFAULT_PAGE_SECTION_ITEM_LIMIT),
uploadMaxFileCount: z.coerce.number().int().min(MIN_UPLOAD_MAX_FILE_COUNT).max(MAX_UPLOAD_MAX_FILE_COUNT).optional().default(DEFAULT_UPLOAD_MAX_FILE_COUNT),
uploadMaxTotalSize: z.coerce.number().int().min(MIN_UPLOAD_MAX_TOTAL_SIZE).max(MAX_UPLOAD_MAX_TOTAL_SIZE).optional().default(DEFAULT_UPLOAD_MAX_TOTAL_SIZE),
homeCoverImageUrl: z.string().trim().max(500).optional().default(''),
homeCoverDarkImageUrl: z.string().trim().max(500).optional().default(''),
homeCoverTitle: z.string().trim().max(120).optional().default(''),
@@ -109,6 +121,8 @@ export const adminSiteSettingsInputSchema = z.object({
tagPostListPageSize: normalizeDisplayCount(data.tagPostListPageSize, DEFAULT_TAG_POST_LIST_PAGE_SIZE),
featuredPostLimit: normalizeDisplayCount(data.featuredPostLimit, DEFAULT_FEATURED_POST_LIMIT),
pageSectionItemLimit: normalizeDisplayCount(data.pageSectionItemLimit, DEFAULT_PAGE_SECTION_ITEM_LIMIT),
uploadMaxFileCount: normalizeUploadMaxFileCount(data.uploadMaxFileCount),
uploadMaxTotalSize: normalizeUploadMaxTotalSize(data.uploadMaxTotalSize),
announcementUrl: normalizeAnnouncementUrl(data.announcementUrl),
announcementBackgroundColor: normalizeAnnouncementBackgroundColor(data.announcementBackgroundColor),
announcementAlignment: normalizeAnnouncementAlignment(data.announcementAlignment),

View File

@@ -12,6 +12,10 @@ import {
DEFAULT_POST_LIST_PAGE_SIZE,
DEFAULT_TAG_POST_LIST_PAGE_SIZE
} from '../../lib/display-count-settings.js'
import {
DEFAULT_UPLOAD_MAX_FILE_COUNT,
DEFAULT_UPLOAD_MAX_TOTAL_SIZE
} from '../../lib/upload-size-limit.js'
/**
* 기본 사이트 설정 반환
@@ -37,6 +41,8 @@ export const getDefaultSiteSettings = () => {
tagPostListPageSize: DEFAULT_TAG_POST_LIST_PAGE_SIZE,
featuredPostLimit: DEFAULT_FEATURED_POST_LIMIT,
pageSectionItemLimit: DEFAULT_PAGE_SECTION_ITEM_LIMIT,
uploadMaxFileCount: DEFAULT_UPLOAD_MAX_FILE_COUNT,
uploadMaxTotalSize: DEFAULT_UPLOAD_MAX_TOTAL_SIZE,
homeCoverImageUrl: '',
homeCoverDarkImageUrl: '',
homeCoverTitle: '',