UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

277 lines (239 loc) • 9.84 kB
/* eslint-disable sort-keys-fix/sort-keys-fix , typescript-sort-keys/interface */ import { createEnv } from '@t3-oss/env-nextjs'; import { z } from 'zod'; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace NodeJS { interface ProcessEnv { // ===== Clerk ===== // NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY?: string; CLERK_SECRET_KEY?: string; CLERK_WEBHOOK_SECRET?: string; // ===== Next Auth ===== // NEXT_AUTH_SECRET?: string; NEXT_AUTH_SSO_PROVIDERS?: string; NEXT_AUTH_DEBUG?: string; AUTH0_CLIENT_ID?: string; AUTH0_CLIENT_SECRET?: string; AUTH0_ISSUER?: string; // Github GITHUB_CLIENT_ID?: string; GITHUB_CLIENT_SECRET?: string; // Azure AD AZURE_AD_CLIENT_ID?: string; AZURE_AD_CLIENT_SECRET?: string; AZURE_AD_TENANT_ID?: string; // AUTHENTIK AUTHENTIK_CLIENT_ID?: string; AUTHENTIK_CLIENT_SECRET?: string; AUTHENTIK_ISSUER?: string; // ZITADEL ZITADEL_CLIENT_ID?: string; ZITADEL_CLIENT_SECRET?: string; ZITADEL_ISSUER?: string; } } } // TODO(NextAuth ENVs Migration): Remove once nextauth envs migration time end const removeTipsTemplate = (willBeRemoved: string, replaceOne: string) => `${willBeRemoved} will be removed in the future. Please set ${replaceOne} instead.`; // End export const getAuthConfig = () => { // TODO(NextAuth ENVs Migration): Remove once nextauth envs migration time end if (process.env.AUTH0_CLIENT_ID) { console.warn(removeTipsTemplate('AUTH0_CLIENT_ID', 'AUTH_AUTH0_ID')); } if (process.env.AUTH0_CLIENT_SECRET) { console.warn(removeTipsTemplate('AUTH0_CLIENT_SECRET', 'AUTH_AUTH0_SECRET')); } if (process.env.AUTH0_ISSUER) { console.warn(removeTipsTemplate('AUTH0_ISSUER', 'AUTH_AUTH0_ISSUER')); } if (process.env.AUTHENTIK_CLIENT_ID) { console.warn(removeTipsTemplate('AUTHENTIK_CLIENT_ID', 'AUTH_AUTHENTIK_ID')); } if (process.env.AUTHENTIK_CLIENT_SECRET) { console.warn(removeTipsTemplate('AUTHENTIK_CLIENT_SECRET', 'AUTH_AUTHENTIK_SECRET')); } if (process.env.AUTHENTIK_ISSUER) { console.warn(removeTipsTemplate('AUTHENTIK_ISSUER', 'AUTH_AUTHENTIK_ISSUER')); } if (process.env.AUTHELIA_CLIENT_ID) { console.warn(removeTipsTemplate('AUTHELIA_CLIENT_ID', 'AUTH_AUTHELIA_ID')); } if (process.env.AUTHELIA_CLIENT_SECRET) { console.warn(removeTipsTemplate('AUTHELIA_CLIENT_SECRET', 'AUTH_AUTHELIA_SECRET')); } if (process.env.AUTHELIA_ISSUER) { console.warn(removeTipsTemplate('AUTHELIA_ISSUER', 'AUTH_AUTHELIA_ISSUER')); } if (process.env.AZURE_AD_CLIENT_ID) { console.warn(removeTipsTemplate('AZURE_AD_CLIENT_ID', 'AUTH_AZURE_AD_ID')); } if (process.env.AZURE_AD_CLIENT_SECRET) { console.warn(removeTipsTemplate('AZURE_AD_CLIENT_SECRET', 'AUTH_AZURE_AD_SECRET')); } if (process.env.AZURE_AD_TENANT_ID) { console.warn(removeTipsTemplate('AZURE_AD_TENANT_ID', 'AUTH_AZURE_AD_TENANT_ID')); } if (process.env.CLOUDFLARE_ZERO_TRUST_CLIENT_ID) { console.warn( removeTipsTemplate('CLOUDFLARE_ZERO_TRUST_CLIENT_ID', 'AUTH_CLOUDFLARE_ZERO_TRUST_ID'), ); } if (process.env.CLOUDFLARE_ZERO_TRUST_CLIENT_SECRET) { console.warn( removeTipsTemplate( 'CLOUDFLARE_ZERO_TRUST_CLIENT_SECRET', 'AUTH_CLOUDFLARE_ZERO_TRUST_SECRET', ), ); } if (process.env.CLOUDFLARE_ZERO_TRUST_ISSUER) { console.warn( removeTipsTemplate('CLOUDFLARE_ZERO_TRUST_ISSUER', 'AUTH_CLOUDFLARE_ZERO_TRUST_ISSUER'), ); } if (process.env.GENERIC_OIDC_CLIENT_ID) { console.warn(removeTipsTemplate('GENERIC_OIDC_CLIENT_ID', 'AUTH_GENERIC_OIDC_ID')); } if (process.env.GENERIC_OIDC_CLIENT_SECRET) { console.warn(removeTipsTemplate('GENERIC_OIDC_CLIENT_SECRET', 'AUTH_GENERIC_OIDC_SECRET')); } if (process.env.GENERIC_OIDC_ISSUER) { console.warn(removeTipsTemplate('GENERIC_OIDC_ISSUER', 'AUTH_GENERIC_OIDC_ISSUER')); } if (process.env.GITHUB_CLIENT_ID) { console.warn(removeTipsTemplate('GITHUB_CLIENT_ID', 'AUTH_GITHUB_ID')); } if (process.env.GITHUB_CLIENT_SECRET) { console.warn(removeTipsTemplate('GITHUB_CLIENT_SECRET', 'AUTH_GITHUB_SECRET')); } if (process.env.LOGTO_CLIENT_ID) { console.warn(removeTipsTemplate('LOGTO_CLIENT_ID', 'AUTH_LOGTO_ID')); } if (process.env.LOGTO_CLIENT_SECRET) { console.warn(removeTipsTemplate('LOGTO_CLIENT_SECRET', 'AUTH_LOGTO_SECRET')); } if (process.env.LOGTO_ISSUER) { console.warn(removeTipsTemplate('LOGTO_ISSUER', 'AUTH_LOGTO_ISSUER')); } if (process.env.ZITADEL_CLIENT_ID) { console.warn(removeTipsTemplate('ZITADEL_CLIENT_ID', 'AUTH_ZITADEL_ID')); } if (process.env.ZITADEL_CLIENT_SECRET) { console.warn(removeTipsTemplate('ZITADEL_CLIENT_SECRET', 'AUTH_ZITADEL_SECRET')); } if (process.env.ZITADEL_ISSUER) { console.warn(removeTipsTemplate('ZITADEL_ISSUER', 'AUTH_ZITADEL_ISSUER')); } // End return createEnv({ client: { NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().optional(), /** * whether to enabled clerk */ NEXT_PUBLIC_ENABLE_CLERK_AUTH: z.boolean().optional(), NEXT_PUBLIC_ENABLE_NEXT_AUTH: z.boolean().optional(), }, server: { // Clerk CLERK_SECRET_KEY: z.string().optional(), CLERK_WEBHOOK_SECRET: z.string().optional(), // NEXT-AUTH NEXT_AUTH_SECRET: z.string().optional(), NEXT_AUTH_SSO_PROVIDERS: z.string().optional().default('auth0'), NEXT_AUTH_DEBUG: z.boolean().optional().default(false), // Auth0 AUTH0_CLIENT_ID: z.string().optional(), AUTH0_CLIENT_SECRET: z.string().optional(), AUTH0_ISSUER: z.string().optional(), // Github GITHUB_CLIENT_ID: z.string().optional(), GITHUB_CLIENT_SECRET: z.string().optional(), // Azure AD AZURE_AD_CLIENT_ID: z.string().optional(), AZURE_AD_CLIENT_SECRET: z.string().optional(), AZURE_AD_TENANT_ID: z.string().optional(), // AUTHENTIK AUTHENTIK_CLIENT_ID: z.string().optional(), AUTHENTIK_CLIENT_SECRET: z.string().optional(), AUTHENTIK_ISSUER: z.string().optional(), // AUTHELIA AUTHELIA_CLIENT_ID: z.string().optional(), AUTHELIA_CLIENT_SECRET: z.string().optional(), AUTHELIA_ISSUER: z.string().optional(), // Cloudflare Zero Trust CLOUDFLARE_ZERO_TRUST_CLIENT_ID: z.string().optional(), CLOUDFLARE_ZERO_TRUST_CLIENT_SECRET: z.string().optional(), CLOUDFLARE_ZERO_TRUST_ISSUER: z.string().optional(), // Generic OIDC GENERIC_OIDC_CLIENT_ID: z.string().optional(), GENERIC_OIDC_CLIENT_SECRET: z.string().optional(), GENERIC_OIDC_ISSUER: z.string().optional(), // ZITADEL ZITADEL_CLIENT_ID: z.string().optional(), ZITADEL_CLIENT_SECRET: z.string().optional(), ZITADEL_ISSUER: z.string().optional(), // LOGTO LOGTO_CLIENT_ID: z.string().optional(), LOGTO_CLIENT_SECRET: z.string().optional(), LOGTO_ISSUER: z.string().optional(), LOGTO_WEBHOOK_SIGNING_KEY: z.string().optional(), // Casdoor CASDOOR_WEBHOOK_SECRET: z.string().optional(), }, runtimeEnv: { // Clerk NEXT_PUBLIC_ENABLE_CLERK_AUTH: !!process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, CLERK_SECRET_KEY: process.env.CLERK_SECRET_KEY, CLERK_WEBHOOK_SECRET: process.env.CLERK_WEBHOOK_SECRET, // Next Auth NEXT_PUBLIC_ENABLE_NEXT_AUTH: process.env.NEXT_PUBLIC_ENABLE_NEXT_AUTH === '1', NEXT_AUTH_SSO_PROVIDERS: process.env.NEXT_AUTH_SSO_PROVIDERS, NEXT_AUTH_SECRET: process.env.NEXT_AUTH_SECRET, NEXT_AUTH_DEBUG: !!process.env.NEXT_AUTH_DEBUG, // Auth0 AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET, AUTH0_ISSUER: process.env.AUTH0_ISSUER, // Github GITHUB_CLIENT_ID: process.env.GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET: process.env.GITHUB_CLIENT_SECRET, // Azure AD AZURE_AD_CLIENT_ID: process.env.AZURE_AD_CLIENT_ID, AZURE_AD_CLIENT_SECRET: process.env.AZURE_AD_CLIENT_SECRET, AZURE_AD_TENANT_ID: process.env.AZURE_AD_TENANT_ID, // AUTHENTIK AUTHENTIK_CLIENT_ID: process.env.AUTHENTIK_CLIENT_ID, AUTHENTIK_CLIENT_SECRET: process.env.AUTHENTIK_CLIENT_SECRET, AUTHENTIK_ISSUER: process.env.AUTHENTIK_ISSUER, // AUTHELIA AUTHELIA_CLIENT_ID: process.env.AUTHELIA_CLIENT_ID, AUTHELIA_CLIENT_SECRET: process.env.AUTHELIA_CLIENT_SECRET, AUTHELIA_ISSUER: process.env.AUTHELIA_ISSUER, // Cloudflare Zero Trust CLOUDFLARE_ZERO_TRUST_CLIENT_ID: process.env.CLOUDFLARE_ZERO_TRUST_CLIENT_ID, CLOUDFLARE_ZERO_TRUST_CLIENT_SECRET: process.env.CLOUDFLARE_ZERO_TRUST_CLIENT_SECRET, CLOUDFLARE_ZERO_TRUST_ISSUER: process.env.CLOUDFLARE_ZERO_TRUST_ISSUER, // Generic OIDC GENERIC_OIDC_CLIENT_ID: process.env.GENERIC_OIDC_CLIENT_ID, GENERIC_OIDC_CLIENT_SECRET: process.env.GENERIC_OIDC_CLIENT_SECRET, GENERIC_OIDC_ISSUER: process.env.GENERIC_OIDC_ISSUER, // ZITADEL ZITADEL_CLIENT_ID: process.env.ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET: process.env.ZITADEL_CLIENT_SECRET, ZITADEL_ISSUER: process.env.ZITADEL_ISSUER, // LOGTO LOGTO_CLIENT_ID: process.env.LOGTO_CLIENT_ID, LOGTO_CLIENT_SECRET: process.env.LOGTO_CLIENT_SECRET, LOGTO_ISSUER: process.env.LOGTO_ISSUER, LOGTO_WEBHOOK_SIGNING_KEY: process.env.LOGTO_WEBHOOK_SIGNING_KEY, // Casdoor CASDOOR_WEBHOOK_SECRET: process.env.CASDOOR_WEBHOOK_SECRET, }, }); }; export const authEnv = getAuthConfig();