port-nimara-client-portal/plugins/00.startup-check.server.ts

53 lines
1.7 KiB
TypeScript

import { mkdir } from 'fs/promises'
import { existsSync } from 'fs'
import { join } from 'path'
export default defineNitroPlugin(async (nitroApp) => {
console.log('[STARTUP] Server-side initialization starting...')
try {
// Ensure data directories exist
const dataDir = './data'
const oidcSessionsDir = './data/oidc-sessions'
const sessionsDir = './data/sessions'
console.log('[STARTUP] Checking storage directories...')
// Create directories if they don't exist
const dirs = [dataDir, oidcSessionsDir, sessionsDir]
for (const dir of dirs) {
if (!existsSync(dir)) {
console.log(`[STARTUP] Creating directory: ${dir}`)
await mkdir(dir, { recursive: true })
console.log(`[STARTUP] Successfully created: ${dir}`)
} else {
console.log(`[STARTUP] Directory exists: ${dir}`)
}
}
// Check environment variables
console.log('[STARTUP] Checking OIDC environment variables...')
const requiredEnvVars = [
'NUXT_OIDC_TOKEN_KEY',
'NUXT_OIDC_SESSION_SECRET',
'NUXT_OIDC_AUTH_SESSION_SECRET',
'NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET'
]
for (const envVar of requiredEnvVars) {
const value = process.env[envVar]
if (value) {
console.log(`[STARTUP] ✅ ${envVar}: present (length: ${value.length})`)
} else {
console.error(`[STARTUP] ❌ ${envVar}: MISSING`)
}
}
console.log('[STARTUP] Server-side initialization complete')
} catch (error) {
console.error('[STARTUP] Server-side initialization error:', error)
// Don't throw - let the app continue with fallback behavior
}
})