mirror of
https://github.com/Afilmory/afilmory
synced 2026-02-01 22:48:17 +00:00
feat: make Creem integration optional and error-prone if misconfigured
This commit is contained in:
@@ -270,32 +270,36 @@ export class AuthProvider implements OnModuleInit {
|
||||
defaultRole: 'user',
|
||||
defaultBanReason: 'Spamming',
|
||||
}),
|
||||
creem({
|
||||
apiKey: env.CREEM_API_KEY,
|
||||
webhookSecret: env.CREEM_WEBHOOK_SECRET,
|
||||
persistSubscriptions: true,
|
||||
testMode: env.NODE_ENV !== 'production',
|
||||
onCheckoutCompleted: async (data) => {
|
||||
await this.handleCreemWebhook({
|
||||
event: data.webhookEventType,
|
||||
metadata: this.mergeMetadata(data.metadata, data.subscription?.metadata),
|
||||
status: data.subscription?.status ?? null,
|
||||
defaultGrant: true,
|
||||
})
|
||||
},
|
||||
// onRefundCreated: async (data: FlatRefundCreated) => {
|
||||
// await this.handleCreemRefundCreated(data)
|
||||
// },
|
||||
onSubscriptionCanceled: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, true)
|
||||
},
|
||||
onSubscriptionExpired: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, true)
|
||||
},
|
||||
onSubscriptionUpdate: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, false)
|
||||
},
|
||||
}),
|
||||
...(env.CREEM_API_KEY && env.CREEM_WEBHOOK_SECRET
|
||||
? [
|
||||
creem({
|
||||
apiKey: env.CREEM_API_KEY,
|
||||
webhookSecret: env.CREEM_WEBHOOK_SECRET,
|
||||
persistSubscriptions: true,
|
||||
testMode: env.NODE_ENV !== 'production',
|
||||
onCheckoutCompleted: async (data) => {
|
||||
await this.handleCreemWebhook({
|
||||
event: data.webhookEventType,
|
||||
metadata: this.mergeMetadata(data.metadata, data.subscription?.metadata),
|
||||
status: data.subscription?.status ?? null,
|
||||
defaultGrant: true,
|
||||
})
|
||||
},
|
||||
// onRefundCreated: async (data: FlatRefundCreated) => {
|
||||
// await this.handleCreemRefundCreated(data)
|
||||
// },
|
||||
onSubscriptionCanceled: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, true)
|
||||
},
|
||||
onSubscriptionExpired: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, true)
|
||||
},
|
||||
onSubscriptionUpdate: async (data) => {
|
||||
await this.handleCreemSubscriptionEvent(data, false)
|
||||
},
|
||||
}),
|
||||
]
|
||||
: []),
|
||||
],
|
||||
hooks: {
|
||||
before: createAuthMiddleware(async (ctx) => {
|
||||
|
||||
4
be/packages/env/src/index.ts
vendored
4
be/packages/env/src/index.ts
vendored
@@ -25,8 +25,8 @@ export const env = createEnv({
|
||||
AUTH_GATEWAY_STATE_SECRET: z.string().min(1).optional(),
|
||||
|
||||
// Payment
|
||||
CREEM_API_KEY: z.string().min(1),
|
||||
CREEM_WEBHOOK_SECRET: z.string().min(1),
|
||||
CREEM_API_KEY: z.string().min(1).optional(),
|
||||
CREEM_WEBHOOK_SECRET: z.string().min(1).optional(),
|
||||
|
||||
// Mail
|
||||
RESEND_API_KEY: z.string().min(1).optional(),
|
||||
|
||||
Reference in New Issue
Block a user