import { verifyToken, getUserById, hasAnyRole, readUsers, writeUsers } from '../../utils/auth.js' import { readMembers, writeMembers, getMemberById } from '../../utils/members.js' export default defineEventHandler(async (event) => { try { // Support both Cookie and Authorization Header let token = getCookie(event, 'auth_token') if (!token) { const authHeader = getHeader(event, 'authorization') if (authHeader && authHeader.startsWith('Bearer ')) { token = authHeader.substring(7) } } if (!token) { throw createError({ statusCode: 401, message: 'Nicht authentifiziert.' }) } const decoded = verifyToken(token) if (!decoded) { throw createError({ statusCode: 401, message: 'Ungültiges Token.' }) } const user = await getUserById(decoded.id) if (!user) { throw createError({ statusCode: 401, message: 'Benutzer nicht gefunden.' }) } // Only admin and vorstand can toggle this flag if (!hasAnyRole(user, 'admin', 'vorstand')) { throw createError({ statusCode: 403, message: 'Keine Berechtigung.' }) } const body = await readBody(event) const { memberId } = body if (!memberId) { throw createError({ statusCode: 400, message: 'Mitglieds-ID ist erforderlich.' }) } // Prüfe ob es ein Login-System-Mitglied ist (user.id === memberId) const users = await readUsers() const loginUser = users.find(u => u.id === memberId) if (loginUser) { // Login-System-Mitglied: Flag in users.json speichern loginUser.isMannschaftsspieler = !loginUser.isMannschaftsspieler await writeUsers(users) return { success: true, message: 'Mannschaftsspieler-Status aktualisiert.', isMannschaftsspieler: loginUser.isMannschaftsspieler } } else { // Manuelles Mitglied: Flag in members.json speichern const members = await readMembers() const member = members.find(m => m.id === memberId) if (!member) { throw createError({ statusCode: 404, message: 'Mitglied nicht gefunden.' }) } member.isMannschaftsspieler = !member.isMannschaftsspieler await writeMembers(members) return { success: true, message: 'Mannschaftsspieler-Status aktualisiert.', isMannschaftsspieler: member.isMannschaftsspieler } } } catch (error) { console.error('Fehler beim Umschalten des Mannschaftsspieler-Status:', error) if (error.statusCode) { throw error } throw createError({ statusCode: error.statusCode || 500, message: error.message || 'Fehler beim Umschalten des Mannschaftsspieler-Status.' }) } })