이름 오버레이 슬라이드와 로컬 메일 인증 우회 추가

캐릭터 이름 표시가 긴 항목은 카드 하단 텍스트를 자동 무한 슬라이드로 보여주고, 넘치지 않는 이름은 기존 고정 표시를 유지하도록 정리했다. 개발 환경에서는 SKIP_EMAIL_VERIFICATION=true 설정으로 가입 시 메일 인증 단계를 건너뛸 수 있게 보강했다.

Made-with: Cursor
This commit is contained in:
2026-04-27 11:10:59 +09:00
committed by DUCK JIN
parent 2559605318
commit 069eda3544
8 changed files with 105 additions and 11 deletions

View File

@@ -30,6 +30,11 @@ const { isReservedNickname } = require('../lib/user-validation')
const router = express.Router()
const EMAIL_VERIFICATION_TTL_MS = 24 * 60 * 60 * 1000
const PASSWORD_RESET_TTL_MS = 60 * 60 * 1000
const SKIP_EMAIL_VERIFICATION = process.env.SKIP_EMAIL_VERIFICATION === 'true'
function shouldSkipEmailVerification() {
return SKIP_EMAIL_VERIFICATION && process.env.NODE_ENV !== 'production'
}
function resolveNicknameChangeIntervalMs() {
const rawHours = String(process.env.NICKNAME_CHANGE_INTERVAL_HOURS || '').trim()
@@ -211,7 +216,8 @@ router.post('/signup', async (req, res) => {
const passwordHash = await bcrypt.hash(password, 10)
const isAdmin = (await countUsers()) === 0
if (!isAdmin && !isMailerConfigured()) {
const skipEmailVerification = !isAdmin && shouldSkipEmailVerification()
if (!isAdmin && !skipEmailVerification && !isMailerConfigured()) {
return res.status(503).json({ error: 'mail_not_configured' })
}
@@ -220,11 +226,11 @@ router.post('/signup', async (req, res) => {
email,
nickname,
passwordHash,
emailVerified: isAdmin,
emailVerified: isAdmin || skipEmailVerification,
isAdmin,
})
if (!isAdmin) {
if (!isAdmin && !skipEmailVerification) {
try {
await issueEmailVerificationMail(req, user)
return res.json({