diff --git a/pages/mitgliederbereich/mitglieder.vue b/pages/mitgliederbereich/mitglieder.vue index 6cf1c18..a6f5450 100644 --- a/pages/mitgliederbereich/mitglieder.vue +++ b/pages/mitgliederbereich/mitglieder.vue @@ -122,7 +122,7 @@ {{ member.name }} -
+
🎂 {{ formatBirthday(member.birthday) }}
{{ member.name }} - + 🎂 {{ formatBirthday(member.birthday) }} diff --git a/server/set-all-visibility-flags.mjs b/server/set-all-visibility-flags.mjs new file mode 100644 index 0000000..8f2428b --- /dev/null +++ b/server/set-all-visibility-flags.mjs @@ -0,0 +1,72 @@ +// Script: set-all-visibility-flags.mjs +// Setzt für alle Mitglieder in allen relevanten Dateien alle visibility-Flags auf true (inkl. Entschlüsselung) + +import { readMembers, writeMembers } from './utils/members.js'; +import dotenv from 'dotenv'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs/promises'; + +dotenv.config({ path: path.resolve(process.cwd(), '.env') }); + +const usersPath = path.resolve(process.cwd(), 'server/data/users.json'); + +async function updateVisibility(obj) { + let changed = 0; + if (Array.isArray(obj)) { + for (const m of obj) { + if (!m.visibility) m.visibility = {}; + if (m.visibility.showEmail !== true) { m.visibility.showEmail = true; changed++; } + if (m.visibility.showPhone !== true) { m.visibility.showPhone = true; changed++; } + if (m.visibility.showAddress !== true) { m.visibility.showAddress = true; changed++; } + if (m.visibility.showBirthday !== true) { m.visibility.showBirthday = true; changed++; } + } + } + return changed; +} + +async function updateUsersFile() { + let changed = 0; + try { + let raw = await fs.readFile(usersPath, 'utf8'); + let users; + if (raw.trim().startsWith('v2:')) { + // encrypted, try to use decryptObject from encryption.js + const { decryptObject } = await import('./utils/encryption.js'); + const key = process.env.ENCRYPTION_KEY || 'local_development_encryption_key_change_in_production'; + users = decryptObject(raw, key); + } else { + users = JSON.parse(raw); + } + changed = await updateVisibility(users); + // write back (encrypted if vorher encrypted) + if (raw.trim().startsWith('v2:')) { + const { encryptObject } = await import('./utils/encryption.js'); + const key = process.env.ENCRYPTION_KEY || 'local_development_encryption_key_change_in_production'; + const encrypted = encryptObject(users, key); + await fs.writeFile(usersPath, encrypted, 'utf8'); + } else { + await fs.writeFile(usersPath, JSON.stringify(users, null, 2), 'utf8'); + } + return changed; + } catch (e) { + console.error('Fehler beim Bearbeiten von users.json:', e); + return 0; + } +} + +async function main() { + let changedMembers = 0; + let changedUsers = 0; + // members.json (manuelle Mitglieder) + let members = await readMembers(); + changedMembers = await updateVisibility(members); + if (changedMembers > 0) { + await writeMembers(members); + } + // users.json (Login-System) + changedUsers = await updateUsersFile(); + console.log(`members.json: ${changedMembers} Änderungen, users.json: ${changedUsers} Änderungen`); +} + +main();