Add login security retention and legal terms
This commit is contained in:
@@ -6,7 +6,8 @@ export async function softDeleteAccount(
|
||||
database: Database,
|
||||
userId: string,
|
||||
deletedBy: string,
|
||||
reason: string | null
|
||||
reason: string | null,
|
||||
purgeSecurityData = false
|
||||
): Promise<boolean> {
|
||||
const user = await (await database.prepare(`
|
||||
SELECT users.username,users.login_username,user_profiles.display_name,deleted_accounts.deleted_at
|
||||
@@ -20,7 +21,7 @@ export async function softDeleteAccount(
|
||||
|
||||
await (await database.prepare(
|
||||
'INSERT INTO deleted_accounts(user_id,original_username,deleted_at,deleted_by,reason) VALUES(?,?,?,?,?)'
|
||||
)).run(userId, String(user.login_username ?? user.username), now, deletedBy, reason);
|
||||
)).run(userId, purgeSecurityData ? deletedUsername : String(user.login_username ?? user.username), now, deletedBy, reason);
|
||||
await (await database.prepare(
|
||||
`UPDATE users SET username=?,login_username=NULL,password_hash=NULL,discord_id=NULL,role='user' WHERE id=?`
|
||||
)).run(deletedUsername, userId);
|
||||
@@ -38,6 +39,9 @@ export async function softDeleteAccount(
|
||||
await (await database.prepare('DELETE FROM user_roles WHERE user_id=?')).run(userId);
|
||||
await (await database.prepare('DELETE FROM user_permissions WHERE user_id=?')).run(userId);
|
||||
await deleteUploadedAvatar(database, userId);
|
||||
if (purgeSecurityData) {
|
||||
await (await database.prepare('DELETE FROM login_events WHERE user_id=?')).run(userId);
|
||||
}
|
||||
await (await database.prepare(
|
||||
'INSERT INTO audit_log(id,actor_id,entity_type,entity_id,action,before_json,after_json,created_at) VALUES(?,?,?,?,?,?,?,?)'
|
||||
)).run(
|
||||
@@ -46,8 +50,8 @@ export async function softDeleteAccount(
|
||||
'user',
|
||||
userId,
|
||||
'account.soft_deleted',
|
||||
JSON.stringify({ username: user.username, displayName: user.display_name }),
|
||||
JSON.stringify({ username: deletedUsername, displayName: 'Deleted Agent', reason }),
|
||||
purgeSecurityData ? JSON.stringify({ purgedAtOwnerRequest: true }) : JSON.stringify({ username: user.username, displayName: user.display_name }),
|
||||
JSON.stringify({ username: deletedUsername, displayName: 'Deleted Agent', reason, securityDataPurged: purgeSecurityData }),
|
||||
now
|
||||
);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user