Files
harheimertc/server/api/cms/users/list.get.js
Torsten Schulz (local) 530e544542
Some checks failed
Code Analysis and Production Deploy / analyze (push) Failing after 5m40s
Code Analysis and Production Deploy / deploy-production (push) Has been skipped
Code Analysis and Production Deploy / deploy-test (push) Has been skipped
Implemented the possibility ofa hidden user for playstore tests
2026-06-09 11:32:00 +02:00

54 lines
1.6 KiB
JavaScript

import { getUserFromToken, readUsers, hasAnyRole, migrateUserRoles, isHiddenUser } from '../../../utils/auth.js'
export default defineEventHandler(async (event) => {
try {
const token = getCookie(event, 'auth_token') || getHeader(event, 'authorization')?.replace(/^Bearer\s+/i, '')
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()
// Nur Admin oder Vorstand duerfen vollen Benutzer-Contact und Rollen sehen.
const canSeePrivate = hasAnyRole(currentUser, 'admin', 'vorstand')
const safeUsers = users.filter(u => !isHiddenUser(u)).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
}
})