Add soft account deletion safeguards

This commit is contained in:
JB
2026-07-24 23:30:53 -04:00
parent 472528f429
commit 05acc022c7
10 changed files with 131 additions and 10 deletions
+4 -2
View File
@@ -56,10 +56,12 @@ export async function getSessionUser(cookies: Cookies): Promise<AuthUser | null>
const database = await getDatabase();
const statement = await database.prepare(`
SELECT users.id, users.username, users.role, users.discord_id,
user_status.last_active_at,user_status.blocked_at,user_status.banned_until
user_status.last_active_at,user_status.blocked_at,user_status.banned_until,
deleted_accounts.deleted_at
FROM sessions
JOIN users ON users.id = sessions.user_id
LEFT JOIN user_status ON user_status.user_id=users.id
LEFT JOIN deleted_accounts ON deleted_accounts.user_id=users.id
WHERE sessions.token_hash = ? AND sessions.expires_at > ?
`);
const user = await statement.get(hashToken(token), new Date().toISOString());
@@ -70,7 +72,7 @@ export async function getSessionUser(cookies: Cookies): Promise<AuthUser | null>
}
const now = new Date();
const banned = typeof user.banned_until === 'string' && new Date(user.banned_until) > now;
if (user.blocked_at || banned) {
if (user.deleted_at || user.blocked_at || banned) {
await (await database.prepare('DELETE FROM sessions WHERE token_hash=?')).run(hashToken(token));
cookies.delete(COOKIE_NAME, { path: '/' });
return null;