🔒️ feat(auth): centralize JWT validation and add deployment docs

- Migrate Chat, Picture, Presi, Zitare backends to shared auth guards
- Remove duplicate local JWT guards and decorators
- Add CD staging workflow for tagged releases
- Add comprehensive auth architecture documentation
- Add Hetzner deployment and Docker setup guides
- Add environment configuration audit docs
- Update env generation scripts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Wuesteon 2025-12-01 20:44:45 +01:00
parent 942c588e15
commit 5b0b3095ff
50 changed files with 11916 additions and 718 deletions

View file

@ -88,6 +88,7 @@ const APP_CONFIGS = [
NODE_ENV: () => 'development',
PORT: (env) => env.CHAT_BACKEND_PORT || '3002',
DEV_BYPASS_AUTH: () => 'true',
DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000',
AZURE_OPENAI_ENDPOINT: (env) => env.AZURE_OPENAI_ENDPOINT,
AZURE_OPENAI_API_KEY: (env) => env.AZURE_OPENAI_API_KEY,
AZURE_OPENAI_API_VERSION: (env) => env.AZURE_OPENAI_API_VERSION,
@ -125,7 +126,7 @@ const APP_CONFIGS = [
vars: {
NODE_ENV: () => 'development',
PORT: (env) => env.MAERCHENZAUBER_BACKEND_PORT || '3003',
MANA_SERVICE_URL: (env) => env.MANA_CORE_AUTH_URL,
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
APP_ID: (env) => env.MAERCHENZAUBER_APP_ID,
MAERCHENZAUBER_SUPABASE_URL: (env) => env.MAERCHENZAUBER_SUPABASE_URL,
MAERCHENZAUBER_SUPABASE_ANON_KEY: (env) => env.MAERCHENZAUBER_SUPABASE_ANON_KEY,
@ -202,7 +203,7 @@ const APP_CONFIGS = [
NODE_ENV: () => 'development',
PORT: (env) => env.MANADECK_BACKEND_PORT || '3004',
DATABASE_URL: (env) => env.MANADECK_DATABASE_URL,
MANA_SERVICE_URL: (env) => env.MANA_CORE_AUTH_URL,
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
APP_ID: (env) => env.MANADECK_APP_ID,
GOOGLE_GENAI_API_KEY: (env) => env.GOOGLE_GENAI_API_KEY,
},
@ -228,6 +229,8 @@ const APP_CONFIGS = [
BACKEND_URL: (env) => env.PICTURE_BACKEND_URL || 'http://localhost:3003',
DATABASE_URL: (env) => env.PICTURE_DATABASE_URL || 'postgresql://picture:picturepassword@localhost:5434/picture',
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
DEV_BYPASS_AUTH: () => 'true',
DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000',
REPLICATE_API_TOKEN: (env) => env.MAERCHENZAUBER_REPLICATE_API_KEY,
CORS_ORIGINS: (env) => env.CORS_ORIGINS,
// Storage configuration
@ -269,7 +272,7 @@ const APP_CONFIGS = [
NODE_ENV: () => 'development',
PORT: (env) => env.NUTRIPHI_BACKEND_PORT || '3002',
DATABASE_URL: (env) => env.NUTRIPHI_DATABASE_URL,
MANACORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
GEMINI_API_KEY: (env) => env.NUTRIPHI_GEMINI_API_KEY,
S3_ENDPOINT: (env) => env.NUTRIPHI_S3_ENDPOINT,
S3_ACCESS_KEY_ID: (env) => env.NUTRIPHI_S3_ACCESS_KEY_ID,
@ -298,6 +301,8 @@ const APP_CONFIGS = [
PORT: (env) => env.ZITARE_BACKEND_PORT || '3007',
DATABASE_URL: (env) => env.ZITARE_DATABASE_URL,
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
DEV_BYPASS_AUTH: () => 'true',
DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000',
CORS_ORIGINS: (env) => env.CORS_ORIGINS,
},
},
@ -328,6 +333,8 @@ const APP_CONFIGS = [
PORT: (env) => env.PRESI_BACKEND_PORT || '3008',
DATABASE_URL: (env) => env.PRESI_DATABASE_URL,
MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
DEV_BYPASS_AUTH: () => 'true',
DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000',
JWT_PUBLIC_KEY: (env) => env.JWT_PUBLIC_KEY,
CORS_ORIGINS: (env) => env.CORS_ORIGINS,
},