's'
This commit is contained in:
37
config/domain.config.ts
Normal file
37
config/domain.config.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* 域名与根域配置 - 特色标识
|
||||
* 更换域名(如 *.hackrobot.cn -> *.nomadro.com)时,只需设置 ROOT_DOMAIN 或各独立变量
|
||||
*
|
||||
* 环境变量:
|
||||
* - ROOT_DOMAIN: 根域名,如 nomadro.com,用于推导 Cookie、API 等默认值
|
||||
* - AUTH_COOKIE_DOMAIN: Cookie 根域,如 .nomadro.com(优先于 ROOT_DOMAIN)
|
||||
* - PAYMENT_API_URL: 支付 API 地址
|
||||
* - NEXT_PUBLIC_POCKETBASE_URL: PocketBase 地址
|
||||
* - NEXT_PUBLIC_SITE_URL: 站点根地址
|
||||
*/
|
||||
|
||||
const isDev = process.env.NODE_ENV === "development";
|
||||
|
||||
/** 根域名,用于推导默认值。如 nomadro.com、hackrobot.cn */
|
||||
export const ROOT_DOMAIN =
|
||||
process.env.ROOT_DOMAIN || process.env.NEXT_PUBLIC_ROOT_DOMAIN || "hackrobot.cn";
|
||||
|
||||
/** Cookie 根域,SSO 跨站登录用。如 .nomadro.com、.hackrobot.cn */
|
||||
export const AUTH_COOKIE_DOMAIN =
|
||||
process.env.AUTH_COOKIE_DOMAIN || `.${ROOT_DOMAIN}`;
|
||||
|
||||
/** 支付 API 默认地址 */
|
||||
export const DEFAULT_PAYMENT_API_URL = isDev
|
||||
? "http://127.0.0.1:8700"
|
||||
: `https://api.${ROOT_DOMAIN}`;
|
||||
|
||||
/** PocketBase 默认地址 */
|
||||
export const DEFAULT_POCKETBASE_URL = `https://pocketbase.${ROOT_DOMAIN}`;
|
||||
|
||||
/** 站点根地址默认值 */
|
||||
export const DEFAULT_SITE_URL = isDev
|
||||
? "http://localhost:3001"
|
||||
: `https://${ROOT_DOMAIN}`;
|
||||
|
||||
/** MinIO 端点默认主机 */
|
||||
export const DEFAULT_MINIO_HOST = `minioweb.${ROOT_DOMAIN}`;
|
||||
@@ -1,9 +1,15 @@
|
||||
/**
|
||||
* 服务配置 - PocketBase、支付等第三方服务
|
||||
* 可通过环境变量覆盖,不同主题可配置不同集合/金额
|
||||
* 域名更换:设置 ROOT_DOMAIN(如 nomadro.com)可推导默认 API 地址
|
||||
*/
|
||||
|
||||
import { getThemeConfig } from "./site.config";
|
||||
import {
|
||||
DEFAULT_PAYMENT_API_URL,
|
||||
DEFAULT_POCKETBASE_URL,
|
||||
DEFAULT_MINIO_HOST,
|
||||
} from "./domain.config";
|
||||
|
||||
export interface PocketBaseConfig {
|
||||
enabled: boolean;
|
||||
@@ -59,6 +65,12 @@ export interface ServicesConfig {
|
||||
|
||||
const isDev = process.env.NODE_ENV === "development";
|
||||
|
||||
/** 站点标识,用于 VIP 按站点隔离。digital 专题站(ai.xx/android.xx)各自独立,如 digital_ai、digital_android */
|
||||
export const SITE_ID = process.env.NEXT_PUBLIC_SITE_ID || "digital";
|
||||
|
||||
/** vip 站(vip.hackrobot.cn)的 site_id,其付费 VIP 可解锁所有 digital 专题站 */
|
||||
export const VIP_MASTER_SITE_ID = "vip";
|
||||
|
||||
/** 获取 PocketBase 配置(可传入主题覆盖) */
|
||||
export function getPocketBaseConfig(themeOverride?: { joinCollection?: string }): PocketBaseConfig {
|
||||
const joinCollection =
|
||||
@@ -67,7 +79,7 @@ export function getPocketBaseConfig(themeOverride?: { joinCollection?: string })
|
||||
"solan";
|
||||
return {
|
||||
enabled: true,
|
||||
url: process.env.NEXT_PUBLIC_POCKETBASE_URL || process.env.POCKETBASE_URL || "https://pocketbase.hackrobot.cn",
|
||||
url: process.env.NEXT_PUBLIC_POCKETBASE_URL || process.env.POCKETBASE_URL || DEFAULT_POCKETBASE_URL,
|
||||
usersCollection: "users",
|
||||
joinCollection,
|
||||
};
|
||||
@@ -77,11 +89,9 @@ export function getPocketBaseConfig(themeOverride?: { joinCollection?: string })
|
||||
export function getPaymentConfig(themeOverride?: { amount?: number; type?: string }): PaymentConfig {
|
||||
const base = {
|
||||
enabled: true,
|
||||
apiUrl:
|
||||
process.env.PAYMENT_API_URL ||
|
||||
(isDev ? "http://127.0.0.1:8700" : "https://api.hackrobot.cn"),
|
||||
apiUrl: process.env.PAYMENT_API_URL || DEFAULT_PAYMENT_API_URL,
|
||||
provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay",
|
||||
defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 80,
|
||||
defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 100,
|
||||
defaultType: process.env.PAYMENT_DEFAULT_TYPE || "meetup",
|
||||
zpaySubmitUrl: process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php",
|
||||
};
|
||||
@@ -94,7 +104,7 @@ export function getPaymentConfig(themeOverride?: { amount?: number; type?: strin
|
||||
|
||||
/** 获取 MinIO 配置(可传入主题覆盖 bucket/prefix) */
|
||||
export function getMinioConfig(themeOverride?: { bucket?: string; uploadPrefix?: string }): MinioConfig {
|
||||
const endPoint = process.env.MINIO_ENDPOINT || "minioweb.hackrobot.cn";
|
||||
const endPoint = process.env.MINIO_ENDPOINT || DEFAULT_MINIO_HOST;
|
||||
const port = parseInt(process.env.MINIO_PORT || "9035", 10);
|
||||
const useSSL = process.env.MINIO_USE_SSL === "true";
|
||||
const bucket = themeOverride?.bucket || process.env.MINIO_BUCKET || "hackrobot";
|
||||
|
||||
@@ -95,7 +95,7 @@ export const THEME_CONFIGS: Record<ThemeId, ThemeConfig> = {
|
||||
accent: "amber",
|
||||
},
|
||||
services: {
|
||||
join: { amount: 80, type: "meetup" },
|
||||
join: { amount: 100, type: "meetup" },
|
||||
pocketbaseJoinCollection: "solan",
|
||||
shopUrl: process.env.NEXT_PUBLIC_SHOP_URL || "https://store.hackrobot.cn/", // 独立站域名
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user