Files
Oleg Isonen cb9619e7d1 feat: Staging password (#5526)
## Description

The password is fixed for everyone and readonly. Can't be defined by
each user in the cloud.

## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
2025-12-18 20:15:25 +01:00

90 lines
2.7 KiB
TypeScript

// @todo zod parse env, make explicit types i.e
const env = {
// Authentication
DEV_LOGIN: process.env.DEV_LOGIN,
GH_CLIENT_ID: process.env.GH_CLIENT_ID,
GH_CLIENT_SECRET: process.env.GH_CLIENT_SECRET,
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
// Secret session key, context encode
AUTH_SECRET: process.env.AUTH_SECRET,
// DEPLOYMENT_ENVIRONMENT development | preview | production
DEPLOYMENT_ENVIRONMENT: process.env.DEPLOYMENT_ENVIRONMENT,
DEPLOYMENT_URL: process.env.DEPLOYMENT_URL,
// Trpc on SaaS
TRPC_SERVER_URL: process.env.TRPC_SERVER_URL,
TRPC_SERVER_API_TOKEN: process.env.TRPC_SERVER_API_TOKEN,
PORT: process.env.PORT,
// Assets
MAX_UPLOAD_SIZE: process.env.MAX_UPLOAD_SIZE,
MAX_ASSETS_PER_PROJECT: process.env.MAX_ASSETS_PER_PROJECT,
// Remote assets
S3_ENDPOINT: process.env.S3_ENDPOINT,
S3_REGION: process.env.S3_REGION,
S3_ACCESS_KEY_ID: process.env.S3_ACCESS_KEY_ID,
S3_SECRET_ACCESS_KEY: process.env.S3_SECRET_ACCESS_KEY,
S3_BUCKET: process.env.S3_BUCKET,
S3_ACL: process.env.S3_ACL,
/**
* Origin of service implementing /cdn-cgi/image/ cloudflare endpoint
* without ending slash
*/
RESIZE_ORIGIN: process.env.RESIZE_ORIGIN,
/**
* Entri API credentials
*/
ENTRI_APPLICATION_ID: process.env.ENTRI_APPLICATION_ID ?? "webstudio",
ENTRI_SECRET: process.env.ENTRI_SECRET,
/**
* Projects as templates in dashboard
*/
PROJECT_TEMPLATES:
process.env.PROJECT_TEMPLATES?.split(",").map((projectId) =>
projectId.trim()
) ?? [],
N8N_WEBHOOK_URL: process.env.N8N_WEBHOOK_URL,
N8N_WEBHOOK_TOKEN: process.env.N8N_WEBHOOK_TOKEN,
PUBLISHER_HOST: process.env.PUBLISHER_HOST || "wstd.work",
STAGING_USERNAME: process.env.STAGING_USERNAME ?? "admin",
STAGING_PASSWORD: process.env.STAGING_PASSWORD ?? "webstudio",
FEATURES: process.env.FEATURES ?? "",
// current user plan features (default)
USER_PLAN: process.env.USER_PLAN ?? "",
POSTGREST_URL: process.env.POSTGREST_URL ?? "http://localhost:3000",
POSTGREST_API_KEY: process.env.POSTGREST_API_KEY ?? "",
SECURE_COOKIE: true,
// Used for project oauth login flow @todo remove ??
AUTH_WS_CLIENT_ID: process.env.AUTH_WS_CLIENT_ID ?? "12345",
AUTH_WS_CLIENT_SECRET: process.env.AUTH_WS_CLIENT_SECRET ?? "12345678",
};
export type ServerEnv = typeof env;
// https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables
if (process.env.VERCEL !== undefined) {
if (env.DEPLOYMENT_ENVIRONMENT === undefined) {
env.DEPLOYMENT_ENVIRONMENT = process.env.VERCEL_ENV;
}
if (env.DEPLOYMENT_URL === undefined) {
env.DEPLOYMENT_URL = process.env.VERCEL_URL;
}
}
export default env;