From 78db50a497fe2cacc6b1fa8ff6afda20631d93d3 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 13 Jun 2024 15:00:11 -0400 Subject: [PATCH] feat(plugin-stripe): add full req object to stripe webhook handlers (#6770) Provides `req` to the webhook handlers in Stripe plugin and fixes type to `PayloadRequest` for req by default. --- packages/plugin-stripe/src/routes/rest.ts | 11 ++++++++--- packages/plugin-stripe/src/routes/webhooks.ts | 7 +++++-- packages/plugin-stripe/src/types.ts | 2 ++ packages/plugin-stripe/src/ui/LinkToDoc.tsx | 4 ++-- packages/plugin-stripe/tsconfig.json | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/plugin-stripe/src/routes/rest.ts b/packages/plugin-stripe/src/routes/rest.ts index 40345132b..1a55870b4 100644 --- a/packages/plugin-stripe/src/routes/rest.ts +++ b/packages/plugin-stripe/src/routes/rest.ts @@ -1,5 +1,6 @@ -import type { PayloadRequestWithData } from 'payload/types' +import type { PayloadRequest, PayloadRequestWithData } from 'payload/types' +import { addDataAndFileToRequest } from '@payloadcms/next/utilities' import { Forbidden } from 'payload/errors' import type { StripePluginConfig } from '../types.js' @@ -8,13 +9,17 @@ import { stripeProxy } from '../utilities/stripeProxy.js' export const stripeREST = async (args: { pluginConfig: StripePluginConfig - req: PayloadRequestWithData + req: PayloadRequest }): Promise => { let responseStatus = 200 let responseJSON const { pluginConfig, req } = args + await addDataAndFileToRequest({ request: req }) + + const requestWithData = req as PayloadRequestWithData + const { data: { stripeArgs, // example: ['cus_MGgt3Tuj3D66f2'] or [{ limit: 100 }, { stripeAccount: 'acct_1J9Z4pKZ4Z4Z4Z4Z' }] @@ -22,7 +27,7 @@ export const stripeREST = async (args: { }, payload, user, - } = req + } = requestWithData const { stripeSecretKey } = pluginConfig diff --git a/packages/plugin-stripe/src/routes/webhooks.ts b/packages/plugin-stripe/src/routes/webhooks.ts index 63107288e..0871f4a3a 100644 --- a/packages/plugin-stripe/src/routes/webhooks.ts +++ b/packages/plugin-stripe/src/routes/webhooks.ts @@ -1,5 +1,5 @@ import type { Config as PayloadConfig } from 'payload/config' -import type { PayloadRequestWithData } from 'payload/types' +import type { PayloadRequest } from 'payload/types' import Stripe from 'stripe' @@ -10,7 +10,7 @@ import { handleWebhooks } from '../webhooks/index.js' export const stripeWebhooks = async (args: { config: PayloadConfig pluginConfig: StripePluginConfig - req: PayloadRequestWithData + req: PayloadRequest }): Promise => { const { config, pluginConfig, req } = args let returnStatus = 200 @@ -47,6 +47,7 @@ export const stripeWebhooks = async (args: { event, payload: req.payload, pluginConfig, + req, stripe, }) @@ -57,6 +58,7 @@ export const stripeWebhooks = async (args: { event, payload: req.payload, pluginConfig, + req, stripe, }) } @@ -69,6 +71,7 @@ export const stripeWebhooks = async (args: { event, payload: req.payload, pluginConfig, + req, stripe, }) } diff --git a/packages/plugin-stripe/src/types.ts b/packages/plugin-stripe/src/types.ts index afb172df0..4e7784c02 100644 --- a/packages/plugin-stripe/src/types.ts +++ b/packages/plugin-stripe/src/types.ts @@ -1,5 +1,6 @@ import type { Payload } from 'payload' import type { Config as PayloadConfig } from 'payload/config' +import type { PayloadRequest } from 'payload/types' import type Stripe from 'stripe' export type StripeWebhookHandler = (args: { @@ -7,6 +8,7 @@ export type StripeWebhookHandler = (args: { event: T payload: Payload pluginConfig?: StripePluginConfig + req: PayloadRequest stripe: Stripe }) => void diff --git a/packages/plugin-stripe/src/ui/LinkToDoc.tsx b/packages/plugin-stripe/src/ui/LinkToDoc.tsx index fea33401b..f6ff4f4d1 100644 --- a/packages/plugin-stripe/src/ui/LinkToDoc.tsx +++ b/packages/plugin-stripe/src/ui/LinkToDoc.tsx @@ -2,8 +2,8 @@ import type { CustomComponent } from 'payload/config' import type { UIField } from 'payload/types' +import { CopyToClipboard } from '@payloadcms/ui/elements/CopyToClipboard' import { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider' -// import CopyToClipboard from 'payload/dist/admin/components/elements/CopyToClipboard' import { useFormFields } from '@payloadcms/ui/forms/Form' import React from 'react' @@ -29,7 +29,7 @@ export const LinkToDoc: CustomComponent = () => { > View in Stripe - {/* */} +