TorbatYar/infrastructure/keycloak/scripts/apply_realm_theme.py
Mortezakoohjani 800b0ba2c5 Deploy TorbatYar for torbatyar.ir with nginx multi-tenant routing.
Wire production domain, CORS for tenant subdomains, celery volume mounts, and nginx reverse proxy configs for apex, API, identity, auth, and wildcard tenants.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 21:43:33 +03:30

58 lines
1.9 KiB
Python

"""اعمال تم فارسی torbatyar و locale پیش‌فرض fa روی realm superapp."""
from __future__ import annotations
import os
import sys
import httpx
KEYCLOAK_URL = os.getenv("KEYCLOAK_SERVER_URL", "http://localhost:8080")
REALM = os.getenv("KEYCLOAK_REALM", "superapp")
ADMIN_USER = os.getenv("KEYCLOAK_ADMIN", "admin")
ADMIN_PASS = os.getenv("KEYCLOAK_ADMIN_PASSWORD", "admin")
def main() -> int:
with httpx.Client(timeout=15.0) as client:
token_resp = client.post(
f"{KEYCLOAK_URL}/realms/master/protocol/openid-connect/token",
data={
"grant_type": "password",
"client_id": "admin-cli",
"username": ADMIN_USER,
"password": ADMIN_PASS,
},
)
token_resp.raise_for_status()
headers = {"Authorization": f"Bearer {token_resp.json()['access_token']}"}
realm_resp = client.get(f"{KEYCLOAK_URL}/admin/realms/{REALM}", headers=headers)
realm_resp.raise_for_status()
data = realm_resp.json()
data["displayName"] = "Torbatyar"
data["displayNameHtml"] = "<div>Torbatyar</div>"
data["internationalizationEnabled"] = True
data["supportedLocales"] = ["fa", "en"]
data["defaultLocale"] = "fa"
data["loginTheme"] = "torbatyar"
data["accountTheme"] = "torbatyar"
data["emailTheme"] = "torbatyar"
update_resp = client.put(
f"{KEYCLOAK_URL}/admin/realms/{REALM}",
headers=headers,
json=data,
)
update_resp.raise_for_status()
print(f"Realm '{REALM}' updated: theme=torbatyar, locale=fa")
return 0
if __name__ == "__main__":
try:
raise SystemExit(main())
except Exception as exc:
print(f"Error: {exc}", file=sys.stderr)
raise SystemExit(1) from exc