v1.3.1: 어나운스 바·가입 금지 닉네임·설정 UI 개선

공개 상단 어나운스 바와 관리자 맞춤 설정을 추가하고, 스팸 필터에서 가입 금지 닉네임을 관리·검증한다. POST 설정 읽기 모드 비활성 토글과 설정 내비 아이콘 틀을 반영한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-19 15:50:47 +09:00
parent 02d33996c5
commit b77f37a94e
23 changed files with 934 additions and 47 deletions

View File

@@ -3,6 +3,7 @@ import { z } from 'zod'
import { getUserById, isUsernameTaken, updateMemberProfile } from '../../repositories/member-repository'
import { requireMemberSession } from '../../utils/member-auth'
import { isManagedAvatarUrl, removeManagedAvatarAsset } from '../../utils/member-avatar'
import { assertSignupUsernameAllowed } from '../../utils/member-username-policy'
const updateProfileSchema = z.object({
username: z.string().trim().min(1).max(30),
@@ -25,6 +26,8 @@ export default defineEventHandler(async (event) => {
})
}
await assertSignupUsernameAllowed(parsedBody.data.username)
const taken = await isUsernameTaken({
username: parsedBody.data.username,
excludeUserId: session.userId

View File

@@ -7,6 +7,7 @@ import { setMemberSession } from '../../utils/member-auth'
import { setAdminSession } from '../../utils/admin-auth'
import { isResendConfigured } from '../../utils/resend-mail'
import { getRuntimeEnvValue } from '../../utils/runtime-env'
import { assertSignupUsernameAllowed } from '../../utils/member-username-policy'
const signupSchema = z.object({
username: z.string().trim().min(1),
@@ -50,6 +51,8 @@ export default defineEventHandler(async (event) => {
const otpRequired = isSignupOtpRequired(config, bootstrap)
const emailNorm = body.email.trim().toLowerCase()
await assertSignupUsernameAllowed(body.username)
const usernameTaken = await isUsernameTaken({
username: body.username
})