import { readFile, mkdir } from 'fs/promises' import { existsSync } from 'fs' import { join } from 'path' /** * API endpoint para obtener los aliases de contactos del usuario actual * Los aliases se guardan en archivos JSON por usuario */ export default defineEventHandler(async (event) => { const config = useRuntimeConfig() const headers = getRequestHeaders(event) // Verificar autenticación const uid = headers['x-authentik-uid'] if (!uid) { throw createError({ statusCode: 401, message: 'Usuario no autenticado' }) } // Sanitizar UID para usar como nombre de archivo const safeUid = uid.replace(/[^a-zA-Z0-9-_]/g, '_') // Ruta del archivo de aliases const dataDir = config.dataDir || './data' const aliasesDir = join(dataDir, 'contact-aliases') const aliasesFile = join(aliasesDir, `${safeUid}.json`) try { // Crear directorio si no existe if (!existsSync(aliasesDir)) { await mkdir(aliasesDir, { recursive: true }) } // Leer archivo de aliases si existe if (existsSync(aliasesFile)) { const content = await readFile(aliasesFile, 'utf-8') return JSON.parse(content) } // Si no existe, retornar objeto vacío return {} } catch (error: any) { console.error('Error al leer aliases:', error) throw createError({ statusCode: 500, message: 'Error al obtener los aliases' }) } })