22 lines
664 B
TypeScript
22 lines
664 B
TypeScript
import { requireRole } from '~/server/utils/auth'
|
|
import { pushSubscriptions } from '~/server/utils/db'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
requireRole(event, 'admin')
|
|
const body = await readBody(event)
|
|
const { title, message, userId } = body
|
|
|
|
const targets = userId
|
|
? [pushSubscriptions.get(userId)].filter(Boolean)
|
|
: Array.from(pushSubscriptions.values())
|
|
|
|
// In production, use web-push library with VAPID keys
|
|
const results = targets.map((sub: any) => ({
|
|
userId: sub.userId,
|
|
sent: true,
|
|
notification: { title, message, timestamp: new Date().toISOString() }
|
|
}))
|
|
|
|
return { sent: results.length, results }
|
|
})
|