diff --git a/.env.example b/.env.example index 169e6db0d..e8f9b747b 100644 --- a/.env.example +++ b/.env.example @@ -64,7 +64,7 @@ POSTHOG_PROJECT_API_KEY= STRIPE_SECRET_KEY= STRIPE_PUBLISHABLE_KEY= STRIPE_WEBHOOK_SECRET= -STRIPE_PRODUCT_CARD_AUTH= -STRIPE_PRODUCT_PRO= STRIPE_PRODUCT_STARTER= +STRIPE_PRODUCT_TEAM= +STRIPE_PRODUCT_PRO= NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= \ No newline at end of file diff --git a/backend/environment.d.ts b/backend/environment.d.ts index 291a33550..8012416f6 100644 --- a/backend/environment.d.ts +++ b/backend/environment.d.ts @@ -3,8 +3,10 @@ export {}; declare global { namespace NodeJS { interface ProcessEnv { + PORT: string; EMAIL_TOKEN_LIFETIME: string; ENCRYPTION_KEY: string; + SALT_ROUNDS: string; JWT_AUTH_LIFETIME: string; JWT_AUTH_SECRET: string; JWT_REFRESH_LIFETIME: string; @@ -19,23 +21,31 @@ declare global { CLIENT_ID_HEROKU: string; CLIENT_ID_VERCEL: string; CLIENT_ID_NETLIFY: string; + CLIENT_ID_GITHUB: string; CLIENT_SECRET_HEROKU: string; CLIENT_SECRET_VERCEL: string; CLIENT_SECRET_NETLIFY: string; + CLIENT_SECRET_GITHUB: string; + CLIENT_SLUG_VERCEL: string; POSTHOG_HOST: string; POSTHOG_PROJECT_API_KEY: string; SENTRY_DSN: string; SITE_URL: string; SMTP_HOST: string; - SMTP_NAME: string; - SMTP_PASSWORD: string; + SMTP_SECURE: string; + SMTP_PORT: string; SMTP_USERNAME: string; - STRIPE_PRODUCT_CARD_AUTH: string; - STRIPE_PRODUCT_PRO: string; + SMTP_PASSWORD: string; + SMTP_FROM_ADDRESS: string; + SMTP_FROM_NAME: string; STRIPE_PRODUCT_STARTER: string; + STRIPE_PRODUCT_TEAM: string; + STRIPE_PRODUCT_PRO: string; STRIPE_PUBLISHABLE_KEY: string; STRIPE_SECRET_KEY: string; STRIPE_WEBHOOK_SECRET: string; + TELEMETRY_ENABLED: string; + LICENSE_KEY: string; } } } diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index 652b3c7b2..2ecd1af8c 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -13,11 +13,11 @@ const MONGO_URL = process.env.MONGO_URL!; const NODE_ENV = process.env.NODE_ENV! || 'production'; const VERBOSE_ERROR_OUTPUT = process.env.VERBOSE_ERROR_OUTPUT! === 'true' && true; const LOKI_HOST = process.env.LOKI_HOST || undefined; -const CLIENT_SECRET_HEROKU = process.env.CLIENT_SECRET_HEROKU!; const CLIENT_ID_HEROKU = process.env.CLIENT_ID_HEROKU!; const CLIENT_ID_VERCEL = process.env.CLIENT_ID_VERCEL!; const CLIENT_ID_NETLIFY = process.env.CLIENT_ID_NETLIFY!; const CLIENT_ID_GITHUB = process.env.CLIENT_ID_GITHUB!; +const CLIENT_SECRET_HEROKU = process.env.CLIENT_SECRET_HEROKU!; const CLIENT_SECRET_VERCEL = process.env.CLIENT_SECRET_VERCEL!; const CLIENT_SECRET_NETLIFY = process.env.CLIENT_SECRET_NETLIFY!; const CLIENT_SECRET_GITHUB = process.env.CLIENT_SECRET_GITHUB!; @@ -35,9 +35,9 @@ const SMTP_USERNAME = process.env.SMTP_USERNAME!; const SMTP_PASSWORD = process.env.SMTP_PASSWORD!; const SMTP_FROM_ADDRESS = process.env.SMTP_FROM_ADDRESS!; const SMTP_FROM_NAME = process.env.SMTP_FROM_NAME! || 'Infisical'; -const STRIPE_PRODUCT_CARD_AUTH = process.env.STRIPE_PRODUCT_CARD_AUTH!; -const STRIPE_PRODUCT_PRO = process.env.STRIPE_PRODUCT_PRO!; const STRIPE_PRODUCT_STARTER = process.env.STRIPE_PRODUCT_STARTER!; +const STRIPE_PRODUCT_PRO = process.env.STRIPE_PRODUCT_PRO!; +const STRIPE_PRODUCT_TEAM = process.env.STRIPE_PRODUCT_TEAM!; const STRIPE_PUBLISHABLE_KEY = process.env.STRIPE_PUBLISHABLE_KEY!; const STRIPE_SECRET_KEY = process.env.STRIPE_SECRET_KEY!; const STRIPE_WEBHOOK_SECRET = process.env.STRIPE_WEBHOOK_SECRET!; @@ -80,9 +80,9 @@ export { SMTP_PASSWORD, SMTP_FROM_ADDRESS, SMTP_FROM_NAME, - STRIPE_PRODUCT_CARD_AUTH, - STRIPE_PRODUCT_PRO, STRIPE_PRODUCT_STARTER, + STRIPE_PRODUCT_TEAM, + STRIPE_PRODUCT_PRO, STRIPE_PUBLISHABLE_KEY, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, diff --git a/backend/src/controllers/v1/organizationController.ts b/backend/src/controllers/v1/organizationController.ts index 353d47e3f..6fbccffeb 100644 --- a/backend/src/controllers/v1/organizationController.ts +++ b/backend/src/controllers/v1/organizationController.ts @@ -2,10 +2,7 @@ import { Request, Response } from 'express'; import * as Sentry from '@sentry/node'; import { SITE_URL, - STRIPE_SECRET_KEY, - STRIPE_PRODUCT_STARTER, - STRIPE_PRODUCT_PRO, - STRIPE_PRODUCT_CARD_AUTH + STRIPE_SECRET_KEY } from '../../config'; import Stripe from 'stripe'; @@ -23,12 +20,6 @@ import { createOrganization as create } from '../../helpers/organization'; import { addMembershipsOrg } from '../../helpers/membershipOrg'; import { OWNER, ACCEPTED } from '../../variables'; -const productToPriceMap = { - starter: STRIPE_PRODUCT_STARTER, - pro: STRIPE_PRODUCT_PRO, - cardAuth: STRIPE_PRODUCT_CARD_AUTH -}; - export const getOrganizations = async (req: Request, res: Response) => { let organizations; try { @@ -340,7 +331,6 @@ export const createOrganizationPortalSession = async ( if (paymentMethods.data.length < 1) { // case: no payment method on file - productToPriceMap['cardAuth']; session = await stripe.checkout.sessions.create({ customer: req.membershipOrg.organization.customerId, mode: 'setup', diff --git a/backend/src/helpers/organization.ts b/backend/src/helpers/organization.ts index e47f92fbe..7060b8487 100644 --- a/backend/src/helpers/organization.ts +++ b/backend/src/helpers/organization.ts @@ -3,6 +3,7 @@ import Stripe from 'stripe'; import { STRIPE_SECRET_KEY, STRIPE_PRODUCT_STARTER, + STRIPE_PRODUCT_TEAM, STRIPE_PRODUCT_PRO } from '../config'; const stripe = new Stripe(STRIPE_SECRET_KEY, { @@ -14,6 +15,7 @@ import { Organization, MembershipOrg } from '../models'; const productToPriceMap = { starter: STRIPE_PRODUCT_STARTER, + team: STRIPE_PRODUCT_TEAM, pro: STRIPE_PRODUCT_PRO }; diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 773d2d116..490d94da0 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -58,6 +58,7 @@ services: - NEXT_PUBLIC_ENV=development - INFISICAL_TELEMETRY_ENABLED=${TELEMETRY_ENABLED} - NEXT_PUBLIC_STRIPE_PRODUCT_PRO=${STRIPE_PRODUCT_PRO} + - NEXT_PUBLIC_STRIPE_PRODUCT_TEAM=${STRIPE_PRODUCT_TEAM} - NEXT_PUBLIC_STRIPE_PRODUCT_STARTER=${STRIPE_PRODUCT_STARTER} networks: - infisical-dev diff --git a/docker-compose.yml b/docker-compose.yml index bd9022cef..6143695f5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,6 +40,7 @@ services: # - NEXT_PUBLIC_POSTHOG_API_KEY=${POSTHOG_PROJECT_API_KEY} - INFISICAL_TELEMETRY_ENABLED=${TELEMETRY_ENABLED} - NEXT_PUBLIC_STRIPE_PRODUCT_PRO=${STRIPE_PRODUCT_PRO} + - NEXT_PUBLIC_STRIPE_PRODUCT_TEAM=${STRIPE_PRODUCT_TEAM} - NEXT_PUBLIC_STRIPE_PRODUCT_STARTER=${STRIPE_PRODUCT_STARTER} networks: - infisical