From 41cb4e5f896e6673ee6b5191b14bff68e3e88d95 Mon Sep 17 00:00:00 2001 From: Mamalizz Date: Sat, 22 Mar 2025 16:22:40 +0330 Subject: [PATCH] added vapid id api --- frontend/server/api/vapid.get.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 frontend/server/api/vapid.get.ts diff --git a/frontend/server/api/vapid.get.ts b/frontend/server/api/vapid.get.ts new file mode 100644 index 0000000..1fbd99c --- /dev/null +++ b/frontend/server/api/vapid.get.ts @@ -0,0 +1,26 @@ +import webPush from "web-push"; + +export default defineEventHandler(() => { + // Generate once and set in .env for production + if (process.env.NODE_ENV === "production") { + if ( + !process.env.VAPID_PRIVATE_KEY || + !process.env.NUXT_PUBLIC_VAPID_KEY + ) { + throw createError({ + statusCode: 500, + statusMessage: "VAPID keys not configured in production", + }); + } + return { publicKey: process.env.NUXT_PUBLIC_VAPID_KEY }; + } + + // Development: Generate and reuse + if (!process.env.VAPID_PRIVATE_KEY) { + const vapidKeys = webPush.generateVAPIDKeys(); + process.env.VAPID_PRIVATE_KEY = vapidKeys.privateKey; + process.env.NUXT_PUBLIC_VAPID_KEY = vapidKeys.publicKey; + } + + return { publicKey: process.env.NUXT_PUBLIC_VAPID_KEY }; +});