이메일 인증과 비밀번호 재설정 추가
This commit is contained in:
@@ -160,10 +160,29 @@ export function createAdminRouter(db) {
|
||||
const values = [nowIso()];
|
||||
|
||||
if (trimmedEmail) {
|
||||
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmedEmail) || trimmedEmail.length > 254) {
|
||||
return res.status(400).json({ error: '올바른 이메일 주소를 입력하세요.' });
|
||||
}
|
||||
fields.push('email = ?');
|
||||
values.push(trimmedEmail);
|
||||
}
|
||||
if (trimmedUsername) {
|
||||
if (
|
||||
trimmedUsername.length < 2 ||
|
||||
trimmedUsername.length > 30 ||
|
||||
!/^[\p{L}\p{N}_-]+$/u.test(trimmedUsername)
|
||||
) {
|
||||
return res.status(400).json({
|
||||
error: '사용자명은 2~30자의 한글·영문·숫자·밑줄·하이픈만 사용할 수 있습니다.',
|
||||
});
|
||||
}
|
||||
const duplicate = db.prepare(`
|
||||
SELECT id FROM users
|
||||
WHERE username = ? COLLATE NOCASE AND id != ?
|
||||
`).get(trimmedUsername, targetId);
|
||||
if (duplicate) {
|
||||
return res.status(409).json({ error: '이미 사용 중인 사용자명입니다.' });
|
||||
}
|
||||
fields.push('username = ?', 'display_name = ?');
|
||||
values.push(trimmedUsername, trimmedUsername);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user