Skip to content

Commit 46776c4

Browse files
committed
Adds dev/prod runtime config and improves env docs
Exposes VITE_DEV_* and VITE_PROD_* variables in runtime config alongside legacy values for backward compatibility. Masks secrets in runtime output by indicating only whether they are set. Updates environment docs to use dev-specific variables and replace hardcoded client credentials with placeholders. Adds debug logging around production configuration checks to ease troubleshooting. Enables clearer environment switching and safer secret handling.
1 parent 6aad16e commit 46776c4

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

docs/technical/AZURE_ENVIRONMENT_VARIABLES.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ These are used as fallbacks and for backward compatibility:
1414
```bash
1515
VITE_BACKEND_BASE_URL=https://dr-cloud-api-dev.trackmangolfdev.com
1616
VITE_LOGIN_BASE_URL=https://tm-login-dev.trackmangolfdev.com
17-
VITE_OAUTH_WEB_CLIENT_ID=dr-web.4633fada-3b16-490f-8de7-2aa67158a1d6
18-
VITE_OAUTH_WEB_CLIENT_SECRET=7c870264-3703-4ec2-add8-5f8e57251d0e
17+
VITE_DEV_OAUTH_WEB_CLIENT_ID=<YOUR_DEV_CLIENT_ID>
18+
VITE_DEV_OAUTH_WEB_CLIENT_SECRET=<YOUR_DEV_CLIENT_SECRET>
1919
```
2020

2121
### Development Environment

server/src/index.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,25 @@ if (fs.existsSync(staticPath)) {
111111

112112
// Build runtime config from VITE_ env vars (fall back to empty strings)
113113
const runtime = {
114+
// Legacy environment variables (default/current environment)
114115
VITE_BACKEND_BASE_URL: process.env.VITE_BACKEND_BASE_URL || '',
115116
VITE_LOGIN_BASE_URL: process.env.VITE_LOGIN_BASE_URL || '',
116117
VITE_NODE_ENV: process.env.VITE_NODE_ENV || 'production',
117118
VITE_OAUTH_WEB_CLIENT_ID: process.env.VITE_OAUTH_WEB_CLIENT_ID || '',
118119
VITE_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
120+
121+
// Development environment variables
122+
VITE_DEV_BACKEND_BASE_URL: process.env.VITE_DEV_BACKEND_BASE_URL || '',
123+
VITE_DEV_LOGIN_BASE_URL: process.env.VITE_DEV_LOGIN_BASE_URL || '',
124+
VITE_DEV_OAUTH_WEB_CLIENT_ID: process.env.VITE_DEV_OAUTH_WEB_CLIENT_ID || '',
125+
VITE_DEV_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_DEV_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
126+
127+
// Production environment variables
128+
VITE_PROD_BACKEND_BASE_URL: process.env.VITE_PROD_BACKEND_BASE_URL || '',
129+
VITE_PROD_LOGIN_BASE_URL: process.env.VITE_PROD_LOGIN_BASE_URL || '',
130+
VITE_PROD_OAUTH_WEB_CLIENT_ID: process.env.VITE_PROD_OAUTH_WEB_CLIENT_ID || '',
131+
VITE_PROD_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_PROD_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
132+
119133
_generated: new Date().toISOString(),
120134
} as Record<string, any>;
121135

@@ -184,11 +198,25 @@ if (fs.existsSync(staticPath)) {
184198
app.get('/runtime-config.js', (_req: Request, res: Response) => {
185199
res.type('application/javascript');
186200
const runtime = {
201+
// Legacy environment variables (default/current environment)
187202
VITE_BACKEND_BASE_URL: process.env.VITE_BACKEND_BASE_URL || '',
188203
VITE_LOGIN_BASE_URL: process.env.VITE_LOGIN_BASE_URL || '',
189204
VITE_NODE_ENV: process.env.VITE_NODE_ENV || 'production',
190205
VITE_OAUTH_WEB_CLIENT_ID: process.env.VITE_OAUTH_WEB_CLIENT_ID || '',
191206
VITE_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
207+
208+
// Development environment variables
209+
VITE_DEV_BACKEND_BASE_URL: process.env.VITE_DEV_BACKEND_BASE_URL || '',
210+
VITE_DEV_LOGIN_BASE_URL: process.env.VITE_DEV_LOGIN_BASE_URL || '',
211+
VITE_DEV_OAUTH_WEB_CLIENT_ID: process.env.VITE_DEV_OAUTH_WEB_CLIENT_ID || '',
212+
VITE_DEV_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_DEV_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
213+
214+
// Production environment variables
215+
VITE_PROD_BACKEND_BASE_URL: process.env.VITE_PROD_BACKEND_BASE_URL || '',
216+
VITE_PROD_LOGIN_BASE_URL: process.env.VITE_PROD_LOGIN_BASE_URL || '',
217+
VITE_PROD_OAUTH_WEB_CLIENT_ID: process.env.VITE_PROD_OAUTH_WEB_CLIENT_ID || '',
218+
VITE_PROD_OAUTH_WEB_CLIENT_SECRET: process.env.VITE_PROD_OAUTH_WEB_CLIENT_SECRET ? 'SET' : '',
219+
192220
_generated: new Date().toISOString(),
193221
} as Record<string, any>;
194222
const content = `// Runtime configuration (generated)\nwindow.runtimeConfig = ${JSON.stringify(

src/lib/environment-switcher.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,23 @@ export function getEnvironmentLabel(env: Environment): string {
9494
*/
9595
export function isProductionConfigured(): boolean {
9696
const config = getEnvironmentConfig('prod');
97-
return !!(
97+
console.log('🔍 [environment-switcher] isProductionConfigured() check:', {
98+
backendBaseUrl: config.backendBaseUrl,
99+
loginBaseUrl: config.loginBaseUrl,
100+
oauthClientId: config.oauthClientId ? 'SET' : 'NOT SET',
101+
oauthClientSecret: config.oauthClientSecret ? 'SET' : 'NOT SET',
102+
hasPlaceholder: config.oauthClientId?.includes('PROD-CLIENT-ID-HERE') || config.oauthClientSecret?.includes('PROD-CLIENT-SECRET-HERE')
103+
});
104+
105+
const isConfigured = !!(
98106
config.backendBaseUrl &&
99107
config.loginBaseUrl &&
100108
config.oauthClientId &&
101109
config.oauthClientSecret &&
102110
!config.oauthClientId.includes('PROD-CLIENT-ID-HERE') &&
103111
!config.oauthClientSecret.includes('PROD-CLIENT-SECRET-HERE')
104112
);
113+
114+
console.log('✅ [environment-switcher] isProductionConfigured():', isConfigured);
115+
return isConfigured;
105116
}

0 commit comments

Comments
 (0)