Remove global API_KEY env var and its validation in checkAuth. Auth via x-api-key now exclusively uses clientApiKey per-app validated inline on POST /api/bugs.
29 lines
1.2 KiB
TypeScript
29 lines
1.2 KiB
TypeScript
function optional(key: string, fallback: string): string {
|
|
return process.env[key] ?? fallback
|
|
}
|
|
|
|
function required(key: string): string {
|
|
const value = process.env[key]
|
|
if (!value) throw new Error(`Missing required environment variable: ${key}`)
|
|
return value
|
|
}
|
|
|
|
export const env = {
|
|
PORT: parseInt(optional('PORT', '3000'), 10),
|
|
NODE_ENV: optional('NODE_ENV', 'development'),
|
|
REACT_EDITOR: optional('REACT_EDITOR', 'code'),
|
|
BASE_URL: optional('BUN_PUBLIC_BASE_URL', 'http://localhost:3000'),
|
|
DATABASE_URL: required('DATABASE_URL'),
|
|
GOOGLE_CLIENT_ID: required('GOOGLE_CLIENT_ID'),
|
|
GOOGLE_CLIENT_SECRET: required('GOOGLE_CLIENT_SECRET'),
|
|
SUPER_ADMIN_EMAILS: optional('SUPER_ADMIN_EMAIL', '').split(',').map(e => e.trim()).filter(Boolean),
|
|
MINIO_ENDPOINT: required('MINIO_ENDPOINT'),
|
|
MINIO_PORT: parseInt(optional('MINIO_PORT', '443'), 10),
|
|
MINIO_USE_SSL: optional('MINIO_USE_SSL', 'true') === 'true',
|
|
MINIO_ACCESS_KEY: required('MINIO_ACCESS_KEY'),
|
|
MINIO_SECRET_KEY: required('MINIO_SECRET_KEY'),
|
|
MINIO_BUCKET: required('MINIO_BUCKET'),
|
|
MINIO_UPLOAD_DIR: optional('MINIO_UPLOAD_DIR', 'bug-reports'),
|
|
REDIS_URL: optional('REDIS_URL', ''),
|
|
} as const
|