diff --git a/.env.sample b/.env.sample index 78e16e8..b914814 100644 --- a/.env.sample +++ b/.env.sample @@ -13,3 +13,4 @@ OIDC_CLIENT_ID= OIDC_CLIENT_SECRET= OIDC_REDIRECT_URL= OIDC_SCOPES=openid profile email +IDP_SERVICE_URL= diff --git a/README.md b/README.md index 6db302e..23b4325 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ docker compose down - `OIDC_CLIENT_SECRET` - `OIDC_REDIRECT_URL` - `OIDC_SCOPES` (예: `openid profile email`) +- `IDP_SERVICE_URL` (예: `https://idp.example.com`) ## DB 초기화 - `kngil_DB` 덤프는 **처음 실행 시** 자동으로 로드됩니다. diff --git a/docker-compose.yml b/docker-compose.yml index f4d9872..4685060 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,7 @@ services: OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET:-} OIDC_REDIRECT_URL: ${OIDC_REDIRECT_URL:-} OIDC_SCOPES: ${OIDC_SCOPES:-} + IDP_SERVICE_URL: ${IDP_SERVICE_URL:-} depends_on: - db diff --git a/kngil/js/faq/faq_common.js b/kngil/js/faq/faq_common.js index b8dda33..12d1539 100644 --- a/kngil/js/faq/faq_common.js +++ b/kngil/js/faq/faq_common.js @@ -910,6 +910,12 @@ function login() { } function mypage01() { + const raw = (window.IDP_SERVICE_URL || "").trim(); + if (raw) { + const url = raw.replace(/\/+$/, "") + "/profile"; + window.open(url, "idp_profile", "noopener,noreferrer"); + return; + } $(".popup_wrap").hide(); $(".btn_close").show(); $("#pop_mypage01").show(0, function () { diff --git a/kngil/js/mypage.js b/kngil/js/mypage.js index 11770fc..16f0c56 100644 --- a/kngil/js/mypage.js +++ b/kngil/js/mypage.js @@ -20,7 +20,27 @@ function hide(id) { 마이페이지 1단계 (비밀번호 인증) - 헤더에서 호출 ========================= */ +function getIdpProfileUrl() { + const raw = (window.IDP_SERVICE_URL || '').trim() + if (!raw) { + return '' + } + return raw.replace(/\/+$/, '') + '/profile' +} + +function openIdpProfile() { + const url = getIdpProfileUrl() + if (!url) { + return false + } + window.open(url, 'idp_profile', 'noopener,noreferrer') + return true +} + window.mypage01 = function () { + if (openIdpProfile()) { + return + } if (!window.IS_LOGIN) { if (typeof window.login === 'function') { window.login() diff --git a/kngil/js/qa/qa_common.js b/kngil/js/qa/qa_common.js index b8dda33..12d1539 100644 --- a/kngil/js/qa/qa_common.js +++ b/kngil/js/qa/qa_common.js @@ -910,6 +910,12 @@ function login() { } function mypage01() { + const raw = (window.IDP_SERVICE_URL || "").trim(); + if (raw) { + const url = raw.replace(/\/+$/, "") + "/profile"; + window.open(url, "idp_profile", "noopener,noreferrer"); + return; + } $(".popup_wrap").hide(); $(".btn_close").show(); $("#pop_mypage01").show(0, function () { diff --git a/kngil/skin/_header.php b/kngil/skin/_header.php index 76422e8..9f19fff 100644 --- a/kngil/skin/_header.php +++ b/kngil/skin/_header.php @@ -3,8 +3,12 @@ if (session_status() === PHP_SESSION_NONE) { session_start(); } +require_once __DIR__ . '/../bbs/env.php'; +kngil_load_env_once(dirname(__DIR__, 2) . '/.env'); + $isLogin = isset($_SESSION['login']); $auth = $_SESSION['login']['auth_bc'] ?? ''; +$idpServiceUrl = getenv('IDP_SERVICE_URL') ?: ''; $loginName = $_SESSION['login']['idp_name'] ?? ($_SESSION['login']['user_nm'] ?? ''); $loginEmail = $_SESSION['login']['idp_email'] ?? ($_SESSION['login']['email'] ?? ''); $displayName = $loginName ?: ($loginEmail ?: ''); @@ -141,6 +145,7 @@ $isCompanyAdmin = in_array($auth, ['BS100100', 'BS100200', 'BS100300', 'BS100400