Privacy settings #60

Merged
Ichitux merged 12 commits from privacy_settings into main 2026-08-27 06:23:54 +00:00
Showing only changes of commit feca55cad1 - Show all commits
+23
View File
@@ -1042,6 +1042,23 @@ app.put('/api/consents', async (req, res) => {
}
});
// Migrate anonymous (session-based) consents to a user account on login/register
async function migrateSessionConsents(userId, sessionId) {
if (!userId || !sessionId) return;
try {
const sessionConsents = await userDbAll('SELECT category, granted FROM user_consents WHERE session_id = ?', [sessionId]);
for (const consent of sessionConsents) {
await userDbRun(
`INSERT INTO user_consents (user_id, category, granted, updated_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP) ON CONFLICT (user_id, category) DO UPDATE SET granted = ?, updated_at = CURRENT_TIMESTAMP`,
[userId, consent.category, consent.granted, consent.granted]
);
}
await userDbRun('DELETE FROM user_consents WHERE session_id = ?', [sessionId]);
} catch (error) {
console.error('Error migrating consents:', error);
}
}
// ========== RECENT SEARCHES (database-based) ==========
const MAX_RECENT = 5;
@@ -1302,6 +1319,9 @@ app.post('/api/auth/login', loginLimiter, async (req, res) => {
req.session.username = user.username;
req.session.isAdmin = Boolean(user.is_admin);
// Migrate anonymous consents to user account
await migrateSessionConsents(user.id, req.sessionID);
appMetrics.loginSuccessTotal.add(1);
res.json({
message: 'Login successful',
@@ -1352,6 +1372,9 @@ app.post('/api/auth/register', registerLimiter, async (req, res) => {
req.session.username = u;
req.session.isAdmin = false;
// Migrate anonymous consents to new user account
await migrateSessionConsents(result.lastID, req.sessionID);
res.status(201).json({
message: 'Registered',
user: {