From 8c27c74b382dfdc1a89fb251d3363be09edb2bd3 Mon Sep 17 00:00:00 2001 From: chan Date: Wed, 11 Feb 2026 13:51:57 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=99=98=EA=B2=BD=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EB=82=B4=20=ED=81=B0=EB=94=B0=EC=98=B4=ED=91=9C(")=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=95=9C=20URL=20=ED=8C=8C=EC=8B=B1=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95=20(utils.GetEnv=20=EB=8F=84?= =?UTF-8?q?=EC=9E=85)=20#239?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/service/hydra_admin_service.go | 5 +++-- backend/internal/service/keto_service.go | 12 +++------- .../internal/service/kratos_admin_service.go | 10 +++++---- backend/internal/service/ory_service.go | 15 ++++++++----- backend/internal/utils/env.go | 22 +++++++++++++++++++ 5 files changed, 43 insertions(+), 21 deletions(-) create mode 100644 backend/internal/utils/env.go diff --git a/backend/internal/service/hydra_admin_service.go b/backend/internal/service/hydra_admin_service.go index b86ebaba..ef1e0911 100644 --- a/backend/internal/service/hydra_admin_service.go +++ b/backend/internal/service/hydra_admin_service.go @@ -2,6 +2,7 @@ package service import ( "baron-sso-backend/internal/domain" + "baron-sso-backend/internal/utils" "bytes" "context" "encoding/json" @@ -27,8 +28,8 @@ type HydraAdminService struct { func NewHydraAdminService() *HydraAdminService { return &HydraAdminService{ - AdminURL: getenv("HYDRA_ADMIN_URL", "http://hydra:4445"), - PublicURL: getenv("HYDRA_PUBLIC_URL", "http://hydra:4444"), + AdminURL: utils.GetEnv("HYDRA_ADMIN_URL", "http://hydra:4445"), + PublicURL: utils.GetEnv("HYDRA_PUBLIC_URL", "http://hydra:4444"), } } diff --git a/backend/internal/service/keto_service.go b/backend/internal/service/keto_service.go index 4b329eae..2eeab758 100644 --- a/backend/internal/service/keto_service.go +++ b/backend/internal/service/keto_service.go @@ -1,6 +1,7 @@ package service import ( + "baron-sso-backend/internal/utils" "bytes" "context" "encoding/json" @@ -9,7 +10,6 @@ import ( "log/slog" "net/http" "net/url" - "os" "time" ) @@ -28,14 +28,8 @@ type ketoService struct { } func NewKetoService() KetoService { - readURL := os.Getenv("KETO_READ_URL") - if readURL == "" { - readURL = "http://keto:4466" - } - writeURL := os.Getenv("KETO_WRITE_URL") - if writeURL == "" { - writeURL = "http://keto:4467" - } + readURL := utils.GetEnv("KETO_READ_URL", "http://keto:4466") + writeURL := utils.GetEnv("KETO_WRITE_URL", "http://keto:4467") return &ketoService{ readURL: readURL, diff --git a/backend/internal/service/kratos_admin_service.go b/backend/internal/service/kratos_admin_service.go index 800407d4..03e9669e 100644 --- a/backend/internal/service/kratos_admin_service.go +++ b/backend/internal/service/kratos_admin_service.go @@ -1,6 +1,7 @@ package service import ( + "baron-sso-backend/internal/utils" "bytes" "context" "encoding/json" @@ -28,7 +29,7 @@ type KratosAdminService struct { func NewKratosAdminService() *KratosAdminService { return &KratosAdminService{ - AdminURL: getenvKratos("KRATOS_ADMIN_URL", "http://kratos:4434"), + AdminURL: utils.GetEnv("KRATOS_ADMIN_URL", "http://kratos:4434"), } } @@ -227,8 +228,9 @@ func (s *KratosAdminService) httpClient() *http.Client { } func getenvKratos(key, fallback string) string { - if v := os.Getenv(key); v != "" { - return v + v := os.Getenv(key) + if v == "" { + return fallback } - return fallback + return strings.Trim(v, "\"") } diff --git a/backend/internal/service/ory_service.go b/backend/internal/service/ory_service.go index bab1e8c0..48cab108 100644 --- a/backend/internal/service/ory_service.go +++ b/backend/internal/service/ory_service.go @@ -2,6 +2,7 @@ package service import ( "baron-sso-backend/internal/domain" + "baron-sso-backend/internal/utils" "bytes" "context" "encoding/json" @@ -27,9 +28,9 @@ type OryProvider struct { func NewOryProvider() *OryProvider { return &OryProvider{ - KratosAdminURL: getenv("KRATOS_ADMIN_URL", "http://kratos:4434"), - KratosPublicURL: getenv("KRATOS_PUBLIC_URL", "http://kratos:4433"), - HydraAdminURL: getenv("HYDRA_ADMIN_URL", "http://hydra:4445"), + KratosAdminURL: utils.GetEnv("KRATOS_ADMIN_URL", "http://kratos:4434"), + KratosPublicURL: utils.GetEnv("KRATOS_PUBLIC_URL", "http://kratos:4433"), + HydraAdminURL: utils.GetEnv("HYDRA_ADMIN_URL", "http://hydra:4445"), } } @@ -727,10 +728,12 @@ func (o *OryProvider) UpdateUserPassword(loginID, newPassword string, r *http.Re } func getenv(key, fallback string) string { - if v := os.Getenv(key); v != "" { - return v + v := os.Getenv(key) + if v == "" { + return fallback } - return fallback + // Strip surrounding double quotes if present + return strings.Trim(v, "\"") } // findIdentityID: Kratos Admin API에서 credentials_identifier로 검색 후 첫 번째 identity id 반환 diff --git a/backend/internal/utils/env.go b/backend/internal/utils/env.go new file mode 100644 index 00000000..6e61dc32 --- /dev/null +++ b/backend/internal/utils/env.go @@ -0,0 +1,22 @@ +package utils + +import ( + "os" + "strings" +) + +// GetEnv retrieves the value of the environment variable named by the key. +// It returns the value if it exists, otherwise it returns the fallback value. +// It automatically strips surrounding double quotes from the value. +func GetEnv(key, fallback string) string { + v := os.Getenv(key) + if v == "" { + return fallback + } + // Strip surrounding double quotes if present + v = strings.TrimSpace(v) + if len(v) >= 2 && v[0] == '"' && v[len(v)-1] == '"' { + return v[1 : len(v)-1] + } + return v +}