rebreak-monorepo/apps/admin/server/api/admin/set-lyra-avatar.post.ts
chahinebrini b1b3b5eb36 feat(admin): migrate lyra-posts feature from legacy nuxt-rebreak
- Add apps/admin/pages/lyra.vue — LLM-generierter oder manueller Bot-Post als Lyra/ReBreak
- Add apps/admin/server/api/admin/lyra-generate.post.ts — Proxy zu backend
- Add apps/admin/server/api/admin/lyra-post.post.ts — Proxy zu backend
- Add apps/admin/server/api/admin/lyra-profile.get.ts — Proxy zu backend
- Add apps/admin/server/api/admin/set-lyra-avatar.post.ts — Proxy zu backend
- Update apps/admin/pages/index.vue — Lyra-Posts Quick-Link auf Dashboard
Auth via admin-auth Middleware + server-side adminSecret Proxy-Pattern.
BenAvatar (Rive, legacy) entfernt, Avatar-Anzeige bleibt via lyra-profile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 02:11:51 +02:00

34 lines
1007 B
TypeScript

// apps/admin/server/api/admin/set-lyra-avatar.post.ts
//
// Proxy: leitet Avatar-Upload (base64 PNG) an das Backend weiter.
// Admin-Secret bleibt server-only (NIE im Client-Bundle).
export default defineEventHandler(async (event): Promise<{ success: boolean; avatar: string }> => {
const config = useRuntimeConfig();
const apiBase = config.public.apiBase;
const adminSecret = config.adminSecret;
if (!adminSecret) {
throw createError({
statusCode: 500,
statusMessage: "ADMIN_SECRET nicht konfiguriert (Infisical-Var fehlt)",
});
}
const body = await readBody(event).catch(() => ({}));
try {
return await $fetch(`${apiBase}/api/admin/set-lyra-avatar`, {
method: "POST",
headers: { "x-admin-secret": adminSecret },
body: body ?? {},
});
} catch (err: any) {
throw createError({
statusCode: err?.statusCode ?? 502,
statusMessage:
err?.statusMessage ?? err?.message ?? "Backend-Request fehlgeschlagen",
});
}
});