feat(auth): Keycloak role 기반 관리자 판별과 도구 카탈로그 개편

- auth.js: realm/client role 추출 → roles·isAdmin 세션 저장
- config.js: ADMIN_ROLE + 도구 URL 8종 환경변수화
- sites.js: 개발4 + 인프라4(adminOnly) 재구성, toolsForUser(isAdmin)
- .project-env.example: ADMIN_ROLE·도구 URL 항목 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyemin Lee
2026-06-29 17:12:03 +09:00
parent 87289502c8
commit 8be3a532cb
4 changed files with 62 additions and 22 deletions

View File

@@ -20,3 +20,17 @@ DATABASE_URL=postgresql://portal_app:7e2950ce6ed0c5a1457ea5b5@postgresql-6ox-pgb
OIDC_ISSUER=https://keycloak.bokdev.in/realms/bokdev
OIDC_CLIENT_ID=portal
OIDC_CLIENT_SECRET=REPLACE_WITH_PORTAL_CLIENT_SECRET
# --- 권한 ---
# 이 Keycloak 역할(realm role)을 가진 사용자에게만 인프라 도구(OpenEverest/MinIO/Keycloak/LiteLLM) 노출.
ADMIN_ROLE=admin
# --- 도구 URL (기본값 있음 · 도메인/폐쇄망 대응으로 덮어쓰기) ---
# CODER_URL=https://coder.bokdev.in/api/v2/users/oidc/callback
# GITEA_URL=https://gitea.bokdev.in/user/oauth2/keycloak
# KUBERO_URL=https://kubero.bokdev.in
# HARBOR_URL=https://harbor.bokdev.in
# OPENEVEREST_URL=https://openeverest.bokdev.in
# MINIO_URL=https://minioc.bokdev.in
# KEYCLOAK_URL=https://keycloak.bokdev.in/admin
# LITELLM_URL=https://litellm.bokdev.in