update stripe customer portal link validation

This commit is contained in:
vincanger
2024-01-10 16:54:29 -05:00
parent 6c98e15dd1
commit 35d7a5955c
2 changed files with 39 additions and 12 deletions

View File

@@ -85,7 +85,8 @@ app SaaSTemplate {
("openai", "^4.24.1"), ("openai", "^4.24.1"),
("lucide-react", "0.306.0"), ("lucide-react", "0.306.0"),
("prettier", "3.1.1"), ("prettier", "3.1.1"),
("prettier-plugin-tailwindcss", "0.5.11") ("prettier-plugin-tailwindcss", "0.5.11"),
("zod", "3.22.4")
], ],
} }

View File

@@ -1,3 +1,5 @@
import { z } from 'zod';
export enum TierIds { export enum TierIds {
HOBBY = 'hobby-tier', HOBBY = 'hobby-tier',
PRO = 'pro-tier', PRO = 'pro-tier',
@@ -7,18 +9,42 @@ export enum TierIds {
export const DOCS_URL = 'https://docs.opensaas.sh'; export const DOCS_URL = 'https://docs.opensaas.sh';
export const BLOG_URL = 'https://docs.opensaas.sh/blog'; export const BLOG_URL = 'https://docs.opensaas.sh/blog';
//get this link at https://dashboard.stripe.com/test/settings/billing/portal const isDevEnv = process.env.NODE_ENV !== 'production';
const isDev = process.env.NODE_ENV !== 'production'; const customerPortalTestUrl = 'https://cool.com'; // TODO: find your test url at https://dashboard.stripe.com/test/settings/billing/portal
const customerPortalTestUrl = '<your-stripe-customer-portal-link>'; const customerPortalProdUrl = 'https://cool.com'; // TODO: add before deploying to production
const customerPortalProdUrl = undefined; // TODO: add before deploying to production
export const STRIPE_CUSTOMER_PORTAL_LINK = isDev ? customerPortalTestUrl : customerPortalProdUrl; export const STRIPE_CUSTOMER_PORTAL_LINK = isDevEnv
? customerPortalTestUrl
: customerPortalProdUrl;
checkStripePortalLinkExists(STRIPE_CUSTOMER_PORTAL_LINK); checkStripePortalLinksExist({ customerPortalTestUrl, customerPortalProdUrl });
function checkStripePortalLinkExists(link: string | undefined) { type StripePortalUrls = {
if (!link) { customerPortalTestUrl: string | undefined;
if (isDev) console.warn('\x1b[31m%s\x1b[0m', '⚠️ STRIPE_CUSTOMER_PORTAL_LINK is not defined.'); customerPortalProdUrl: string | undefined;
if (!isDev) throw new Error('🚫 STRIPE_CUSTOMER_PORTAL_LINK is not defined'); };
}
function checkStripePortalLinksExist(links: StripePortalUrls) {
const schema = z.string().url();
const testResult = schema.safeParse(links.customerPortalTestUrl);
const prodResult = schema.safeParse(links.customerPortalProdUrl);
let consoleMsg = {
color: '\x1b[33m%s\x1b[0m',
msg: '',
};
if (testResult.success && prodResult.success) {
consoleMsg.color = '\x1b[32m%s\x1b[0m';
consoleMsg.msg =
'✅ Both STRIPE_CUSTOMER_PORTAL_LINK links defined';
} else if (!testResult.success && !prodResult.success) {
consoleMsg.msg =
'⛔️ STRIPE_CUSTOMER_PORTAL_LINK is not defined';
} else if (!testResult.success) {
consoleMsg.msg = '⛔️ STRIPE_CUSTOMER_PORTAL_LINK is not defined for test env';
} else {
consoleMsg.msg =
'⛔️ STRIPE_CUSTOMER_PORTAL_LINK is not defined for prod env';
}
console.log(consoleMsg.color, consoleMsg.msg);
} }