partial configs for docker

This commit is contained in:
Emily
2024-06-27 14:47:38 +02:00
parent 713f956429
commit f675e1f289
5 changed files with 61 additions and 19 deletions

View File

@@ -25,6 +25,7 @@ export default defineEventHandler(async event => {
return await Redis.useCache({ key: `invoices:${project_id}`, exp: 10 }, async () => {
const invoices = await StripeService.getInvoices(project.customer_id);
if (!invoices) return [];
return invoices?.data.map(e => {
const result: InvoiceData = {
@@ -37,6 +38,7 @@ export default defineEventHandler(async event => {
return result;
});
});
});

View File

@@ -29,7 +29,7 @@ export default defineEventHandler(async event => {
billing_expire_at: projectLimits.billing_expire_at,
limit: projectLimits.limit,
count: projectLimits.events + projectLimits.visits,
subscription_status: subscription.status
subscription_status: StripeService.isDisabled() ? 'Disabled mode' : (subscription?.status ?? '?')
}
return result;

View File

@@ -10,15 +10,19 @@ export default async () => {
console.log('[SERVER] Initializing');
EmailService.createTransport(
config.EMAIL_SERVICE,
config.EMAIL_HOST,
config.EMAIL_USER,
config.EMAIL_PASS,
);
if (config.EMAIL_SERVICE) {
EmailService.createTransport(config.EMAIL_SERVICE, config.EMAIL_HOST, config.EMAIL_USER, config.EMAIL_PASS);
console.log('[EMAIL] Initialized')
}
StripeService.init(config.STRIPE_SECRET, config.STRIPE_WH_SECRET, false);
if (config.STRIPE_SECRET) {
StripeService.init(config.STRIPE_SECRET, config.STRIPE_WH_SECRET, false);
console.log('[STRIPE] Initialized')
} else {
StripeService.disable();
console.log('[STRIPE] No stripe key - Disabled mode')
}
if (!connection || connection.connection.readyState == mongoose.ConnectionStates.disconnected) {

View File

@@ -6,6 +6,7 @@ class StripeService {
private privateKey?: string;
private webhookSecret?: string;
public testMode?: boolean;
private disabledMode: boolean = false;
init(privateKey: string, webhookSecret: string, testMode: boolean = false) {
this.privateKey = privateKey;
@@ -14,7 +15,12 @@ class StripeService {
this.testMode = testMode;
}
disable() { this.disabledMode = true; }
enable() { this.disabledMode = false; }
isDisabled() { return this.disabledMode; }
parseWebhook(body: any, sig: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
if (!this.webhookSecret) {
console.error('Stripe not initialized')
@@ -24,6 +30,7 @@ class StripeService {
}
async cretePayment(price: string, success_url: string, pid: string, customer?: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const checkout = await this.stripe.checkout.sessions.create({
@@ -44,42 +51,50 @@ class StripeService {
}
async deleteSubscription(subscriptionId: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const subscription = await this.stripe.subscriptions.cancel(subscriptionId);
return subscription;
}
async getSubscription(subscriptionId: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const subscription = await this.stripe.subscriptions.retrieve(subscriptionId);
return subscription;
}
async getAllSubscriptions(customer_id: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const subscriptions = await this.stripe.subscriptions.list({customer: customer_id});
const subscriptions = await this.stripe.subscriptions.list({ customer: customer_id });
return subscriptions;
}
async getInvoices(customer_id: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const invoices = await this.stripe?.invoices.list({ customer: customer_id });
return invoices;
}
async getCustomer(customer_id: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const customer = await this.stripe.customers.retrieve(customer_id, { expand: [] })
return customer;
}
async createCustomer(email: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const customer = await this.stripe.customers.create({ email });
return customer;
}
async deleteCustomer(customer_id: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const { deleted } = await this.stripe.customers.del(customer_id);
return deleted;
@@ -89,6 +104,7 @@ class StripeService {
async createFreeSubscription(customer_id: string) {
if (this.disabledMode) return;
if (!this.stripe) throw Error('Stripe not initialized');
const FREE_PLAN = getPlanFromTag('FREE');