Compare commits

...

2 Commits

Author SHA1 Message Date
ThaMunsta 7391faa28a fix: update creator name retrieval to handle deleted users in hunts query
Build Images and Deploy / Update-PROD-Stack (push) Successful in 29s
2026-03-20 15:40:23 -04:00
ThaMunsta 8a22b04842 feat: enhance hard delete functionality to reassign user-related hunts 2026-03-20 15:38:39 -04:00
2 changed files with 6 additions and 3 deletions
+5 -2
View File
@@ -162,8 +162,11 @@ const Users = {
db.prepare("DELETE FROM sessions WHERE sess LIKE ?").run('%"userId":' + userId + '%'); db.prepare("DELETE FROM sessions WHERE sess LIKE ?").run('%"userId":' + userId + '%');
}, },
hardDeleteUser(userId) { hardDeleteUser(userId, reassignTo) {
this._scrubUserContent(userId); this._scrubUserContent(userId);
if (reassignTo) {
db.prepare('UPDATE hunts SET created_by = ? WHERE created_by = ?').run(reassignTo, userId);
}
db.prepare('DELETE FROM scans WHERE user_id = ?').run(userId); db.prepare('DELETE FROM scans WHERE user_id = ?').run(userId);
db.prepare('UPDATE packages SET first_scanned_by = NULL WHERE first_scanned_by = ?').run(userId); db.prepare('UPDATE packages SET first_scanned_by = NULL WHERE first_scanned_by = ?').run(userId);
db.prepare('UPDATE packages SET last_scanned_by = NULL WHERE last_scanned_by = ?').run(userId); db.prepare('UPDATE packages SET last_scanned_by = NULL WHERE last_scanned_by = ?').run(userId);
@@ -222,7 +225,7 @@ const Hunts = {
}, },
getAll() { getAll() {
return db.prepare('SELECT h.*, COALESCE(u.display_name, u.username) as creator_name FROM hunts h JOIN users u ON h.created_by = u.id ORDER BY h.created_at DESC').all(); return db.prepare('SELECT h.*, COALESCE(u.display_name, u.username, ?) as creator_name FROM hunts h LEFT JOIN users u ON h.created_by = u.id ORDER BY h.created_at DESC').all('[deleted]');
}, },
getByCreator(userId) { getByCreator(userId) {
+1 -1
View File
@@ -203,7 +203,7 @@ router.post('/users/:id/hard-delete', requireAdmin, (req, res) => {
return res.redirect('/admin'); return res.redirect('/admin');
} }
Users.hardDeleteUser(userId); Users.hardDeleteUser(userId, req.session.userId);
req.session.flash = { type: 'success', message: `Account "${user.display_name || user.username}" has been permanently removed.` }; req.session.flash = { type: 'success', message: `Account "${user.display_name || user.username}" has been permanently removed.` };
res.redirect('/admin'); res.redirect('/admin');
}); });