import { getUserFromToken, readUsers, hasAnyRole, hasRole, migrateUserRoles } from '../../../utils/auth.js'

export default defineEventHandler(async (event) => {
  try {
    const token = getCookie(event, 'auth_token')
    const currentUser = await getUserFromToken(token)

    // Seite darf von Admin ODER Vorstand genutzt werden
    if (!currentUser || !hasAnyRole(currentUser, 'admin', 'vorstand')) {
      throw createError({
        statusCode: 403,
        message: 'Zugriff verweigert'
      })
    }

    const users = await readUsers()

    const isVorstand = hasRole(currentUser, 'vorstand')

    // Nur Admin oder Vorstand duerfen vollen Benutzer-Contact und Rollen sehen.
    const canSeePrivate = hasAnyRole(currentUser, 'admin', 'vorstand')

    const safeUsers = users.map(u => {
      const migrated = migrateUserRoles({ ...u })
      const roles = Array.isArray(migrated.roles) ? migrated.roles : (migrated.role ? [migrated.role] : ['mitglied'])

      return canSeePrivate
        ? {
            id: u.id,
            email: u.email,
            name: u.name,
            roles: roles,
            role: roles[0] || 'mitglied',
            phone: u.phone || '',
            active: u.active,
            created: u.created,
            lastLogin: u.lastLogin
          }
        : {
            id: u.id,
            name: u.name,
            role: roles[0] || 'mitglied',
            active: u.active,
            lastLogin: u.lastLogin
          }
    })

    return {
      users: safeUsers
    }
  } catch (error) {
    console.error('Fehler beim Laden der Benutzer:', error)
    throw error
  }
})

