Verbessere Mitgliederabfrage: Filtere manuelle Mitglieder nach aktiven/akzeptierten Status und entferne nicht benötigte Datenschutzlogik.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 44s

This commit is contained in:
Torsten Schulz (local)
2026-02-11 12:49:14 +01:00
parent 0d533710cd
commit 8a1e309eba

View File

@@ -35,9 +35,15 @@ export default defineEventHandler(async (event) => {
const emailToIndexMap = new Map() // email -> index in mergedMembers
const nameToIndexMap = new Map() // name -> index in mergedMembers
// First, add all manual members and build lookup maps
// First, add manual members that are active/accepted (filter out pending applications)
for (let i = 0; i < manualMembers.length; i++) {
const member = manualMembers[i]
// Normalize acceptance flags: accept if member.active===true or member.status==='accepted' or member.accepted===true
const isAccepted = member.active === true || (member.status && String(member.status).toLowerCase() === 'accepted') || member.accepted === true
if (!isAccepted) {
// Skip applications that are not yet accepted
continue
}
const normalizedEmail = member.email?.toLowerCase().trim() || ''
const fullName = `${member.firstName || ''} ${member.lastName || ''}`.trim()
const normalizedName = fullName.toLowerCase()
@@ -142,25 +148,12 @@ export default defineEventHandler(async (event) => {
// Sort by name
mergedMembers.sort((a, b) => a.name.localeCompare(b.name))
// Serverseitiger Datenschutz: nur Vorstands-Mitglieder erhalten volle Kontaktdaten/Logindaten
const isVorstand = hasRole(currentUser, 'vorstand')
// Für nicht-vorstandliche Anfragen liefern wir eine stark reduzierte, nicht-identifizierende
// Ansicht der Mitgliederliste (nur das Nötigste für öffentliche Anzeigen)
const safeMembers = isVorstand
? mergedMembers
: mergedMembers.map(m => ({
// Minimale, unkritische Felder
id: m.id,
name: m.name,
source: m.source,
isMannschaftsspieler: !!m.isMannschaftsspieler
}))
// Die Mitgliederliste ist nur für authentifizierte Nutzer sichtbar (siehe oben).
// Entsprechend zeigen wir allen eingeloggten Nutzer*innen die vollständigen Kontaktdaten
// (inkl. Telefon und E-Mail) für alle aktiven Mitglieder.
return {
success: true,
members: safeMembers
members: mergedMembers
}
} catch (error) {
console.error('Fehler beim Abrufen der Mitgliederliste:', error)