diff --git a/composer.json b/composer.json index 4bcd6e6..0017f6a 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "pdsinterop/solid-auth": "v0.13.0", + "pdsinterop/solid-auth": "v0.14.1", "pdsinterop/solid-crud": "v0.8.3", "phpmailer/phpmailer": "^6.10", "sweetrdf/easyrdf": "~1.15.0", diff --git a/lib/ClientRegistration.php b/lib/ClientRegistration.php index 2a597a3..80cce44 100644 --- a/lib/ClientRegistration.php +++ b/lib/ClientRegistration.php @@ -5,10 +5,6 @@ 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' @@ -20,6 +16,14 @@ public static function getRegistration($clientId) { if (sizeof($result) === 1) { return json_decode($result[0]['clientData'], true); } + if (preg_match("/^http(s)?:/", $clientId)) { + $clientData = self::getRemoteRegistration($clientId); + if (!isset($clientData['origin']) && isset($clientData['client_uri'])) { + $clientData['origin'] = preg_replace("/\/$/", "", $clientData['client_uri']); + } + self::saveClientRegistration($clientData); + return $clientData; + } return false; } diff --git a/lib/Routes/SolidIdp.php b/lib/Routes/SolidIdp.php index 9c3f3ff..6cc3225 100644 --- a/lib/Routes/SolidIdp.php +++ b/lib/Routes/SolidIdp.php @@ -90,15 +90,17 @@ public static function respondToAuthorize() { $response = $authServer->respondToAuthorizationRequest($request, $user, $approval); - $tokenGenerator = Server::getTokenGenerator(); + if (in_array("id_token", $requestedResponseTypes)) { + $tokenGenerator = Server::getTokenGenerator(); - $response = $tokenGenerator->addIdTokenToResponse( - $response, - $clientId, - $webId, - $_SESSION['nonce'] ?? '', - Server::getKeys()["privateKey"] - ); + $response = $tokenGenerator->addIdTokenToResponse( + $response, + $clientId, + $webId, + $_SESSION['nonce'] ?? '', + Server::getKeys()["privateKey"] + ); + } Server::respond($response); } diff --git a/lib/Routes/SolidStorage.php b/lib/Routes/SolidStorage.php index 6eecb89..1201725 100644 --- a/lib/Routes/SolidStorage.php +++ b/lib/Routes/SolidStorage.php @@ -36,7 +36,14 @@ public static function respondToStorage() { $resourceServer->setBaseUrl($baseUrl); $wac->setBaseUrl($baseUrl); - $webId = StorageServer::getWebId($rawRequest); + try { + $webId = StorageServer::getWebId($rawRequest); + } catch(\Exception $e) { + $response = $resourceServer->getResponse() + -> withStatus(400, "Bad request"); + StorageServer::respond($response); + exit(); + } if (!isset($webId)) { $response = $resourceServer->getResponse()