회원 탈퇴와 덱 일괄 삭제 추가
This commit is contained in:
@@ -6,6 +6,7 @@ import { signToken, requireAuth } from '../middleware/auth.js';
|
||||
import { nowIso } from '../utils.js';
|
||||
import { getAvatarFilePath, getAvatarUrl, saveAvatarImage, deleteAvatarImage } from '../services/avatarImage.js';
|
||||
import { sendPasswordResetEmail, sendVerificationEmail } from '../services/emailService.js';
|
||||
import { deleteUserAccount } from '../services/accountDeletion.js';
|
||||
|
||||
const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
const USERNAME_PATTERN = /^[\p{L}\p{N}_-]+$/u;
|
||||
@@ -589,5 +590,32 @@ export function createAuthRouter(db) {
|
||||
res.json({ ok: true, message: '비밀번호가 변경되었습니다.' });
|
||||
});
|
||||
|
||||
router.delete('/me', requireAuth, (req, res) => {
|
||||
const confirmation = String(req.body?.confirmation || '');
|
||||
if (confirmation !== 'DELETE') {
|
||||
return res.status(400).json({
|
||||
error: '탈퇴 확인 입력란에 DELETE를 정확히 입력해 주세요.',
|
||||
code: 'ACCOUNT_DELETE_CONFIRMATION_REQUIRED',
|
||||
});
|
||||
}
|
||||
|
||||
const user = db.prepare('SELECT id, role FROM users WHERE id = ?').get(req.user.id);
|
||||
if (!user) {
|
||||
return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
|
||||
}
|
||||
if (user.role === 'admin') {
|
||||
return res.status(400).json({
|
||||
error: '관리자 계정은 다른 관리자가 회원 관리 화면에서 탈퇴 처리해야 합니다.',
|
||||
});
|
||||
}
|
||||
|
||||
const result = deleteUserAccount(db, user.id);
|
||||
res.json({
|
||||
ok: true,
|
||||
...result,
|
||||
message: '회원 탈퇴가 완료되었습니다.',
|
||||
});
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user