'use server' import type { WebhookSecretResult } from './types' import { requireRole, UserRole } from '@admin/auth/middleware' import db from '@admin/db' import { webhooks } from '@admin/db/schema' import { toActionError } from '@admin/utils/error/to-action-error' import { generateWebhookSecret } from '@admin/utils/webhook/generate-webhook-secret' import { eq } from 'drizzle-orm' import { updateTag } from 'next/cache' import { webhooksCacheTags } from './types' export async function regenerateWebhookSecret(id: string): Promise { await requireRole([UserRole.ADMIN]) try { const [row] = await db .update(webhooks) .set({ secret: generateWebhookSecret(), updatedAt: new Date().toISOString() }) .where(eq(webhooks.id, id)) .returning({ secret: webhooks.secret }) if (!row) return { success: false, error: 'Webhook not found' } updateTag(webhooksCacheTags.endpoints) return { success: true, secret: row.secret } } catch (error) { console.error('Error regenerating webhook secret:', error) return { success: false, error: toActionError(error, 'Failed to regenerate webhook secret') } } }