diff --git a/lib/ClientRegistration.php b/lib/ClientRegistration.php index 88d98a0..ddcf2bb 100644 --- a/lib/ClientRegistration.php +++ b/lib/ClientRegistration.php @@ -5,6 +5,10 @@ class ClientRegistration { public static function getRegistration($clientId) { + if (preg_match("/^http(s)?:/", $clientId)) { + return self::getRemoteRegistration($clientId); + } + Db::connect(); $query = Db::$pdo->prepare( 'SELECT clientData FROM clients WHERE clientId=:clientId' @@ -18,7 +22,13 @@ public static function getRegistration($clientId) { } return false; } - + + public static function getRemoteRegistration($url) { + $clientDocument = file_get_contents($url); + $clientRegistration = json_decode($clientDocument, true); + return $clientRegistration; + } + public static function saveClientRegistration($clientData) { Db::connect(); if (!isset($clientData['client_name'])) { diff --git a/lib/Routes/SolidIdp.php b/lib/Routes/SolidIdp.php index 4d15982..acc7f52 100644 --- a/lib/Routes/SolidIdp.php +++ b/lib/Routes/SolidIdp.php @@ -68,7 +68,7 @@ public static function respondToAuthorize() { $approval = true; } else { $clientRegistration = ClientRegistration::getRegistration($clientId); - if (in_array($clientRegistration['origin'], TRUSTED_APPS)) { + if (isset($clientRegistration['origin']) && in_array($clientRegistration['origin'], TRUSTED_APPS)) { $approval = true; } }