diff --git a/lib/WorkOS.php b/lib/WorkOS.php index fbc9536e..935e32e3 100644 --- a/lib/WorkOS.php +++ b/lib/WorkOS.php @@ -43,8 +43,9 @@ public static function getApiKey() return self::$apiKey; } - if (getenv("WORKOS_API_KEY")) { - self::$apiKey = getenv("WORKOS_API_KEY"); + $envValue = self::getEnvVariable("WORKOS_API_KEY"); + if ($envValue) { + self::$apiKey = $envValue; return self::$apiKey; } @@ -71,8 +72,9 @@ public static function getClientId() return self::$clientId; } - if (getenv("WORKOS_CLIENT_ID")) { - self::$clientId = getenv("WORKOS_CLIENT_ID"); + $envValue = self::getEnvVariable("WORKOS_CLIENT_ID"); + if ($envValue) { + self::$clientId = $envValue; return self::$clientId; } @@ -135,4 +137,29 @@ public static function getVersion() { return self::$version; } + + /** + * Get environment variable with fallback to cached config sources. + * Checks in order: getenv(), $_ENV, $_SERVER + * + * @param string $key Environment variable name + * @return string|false The environment variable value or false if not found + */ + private static function getEnvVariable($key) + { + $value = getenv($key); + if ($value !== false && $value !== '') { + return $value; + } + + if (isset($_ENV[$key]) && $_ENV[$key] !== '') { + return $_ENV[$key]; + } + + if (isset($_SERVER[$key]) && $_SERVER[$key] !== '') { + return $_SERVER[$key]; + } + + return false; + } } diff --git a/tests/WorkOS/WorkOSTest.php b/tests/WorkOS/WorkOSTest.php new file mode 100644 index 00000000..2385aee0 --- /dev/null +++ b/tests/WorkOS/WorkOSTest.php @@ -0,0 +1,59 @@ +assertEquals("pk_test_env_superglobal", WorkOS::getApiKey()); + } + + public function testGetClientIdFromEnvSuperglobal() + { + $_ENV['WORKOS_CLIENT_ID'] = "client_test_env_superglobal"; + + $this->assertEquals("client_test_env_superglobal", WorkOS::getClientId()); + } + + public function testLaravelConfigCachingScenario() + { + $_ENV['WORKOS_API_KEY'] = "pk_test_laravel_cached"; + $_ENV['WORKOS_CLIENT_ID'] = "client_test_laravel_cached"; + + $this->assertEquals("pk_test_laravel_cached", WorkOS::getApiKey()); + $this->assertEquals("client_test_laravel_cached", WorkOS::getClientId()); + } +}