Skip to content

Commit 5b6c363

Browse files
committed
handle clients that register with an URL
1 parent d2a5361 commit 5b6c363

1 file changed

Lines changed: 28 additions & 8 deletions

File tree

solid/lib/Controller/ServerController.php

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,32 @@ public function authorize() {
181181
// return $result->addHeader('Access-Control-Allow-Origin', '*');
182182
}
183183
}
184-
$clientId = $getVars['client_id'];
184+
185+
if (preg_match("/^http(s)?:/", $getVars['client_id'])) {
186+
$parsedOrigin = parse_url($getVars['redirect_uri']);
187+
$origin = 'https://' . $parsedOrigin['host'];
188+
189+
$clientData = array(
190+
"client_id_issued_at" => time(),
191+
"client_name" => $getVars['client_id'],
192+
"origin" => $origin,
193+
"redirect_uris" => array(
194+
$getVars['redirect_uri']
195+
)
196+
);
197+
$clientId = $this->config->saveClientRegistration($origin, $clientData);
198+
$clientId = $this->config->saveClientRegistration($getVars['client_id'], $clientData);
199+
$returnUrl = $getVars['redirect_uri'];
200+
} else {
201+
$clientId = $getVars['client_id'];
202+
$returnUrl = $_SERVER['REQUEST_URI'];
203+
}
204+
185205
$approval = $this->checkApproval($clientId);
186206
if (!$approval) {
187207
$result = new JSONResponse('Approval required');
188208
$result->setStatus(302);
189-
$approvalUrl = $this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkToRoute("solid.page.approval", array("clientId" => $clientId, "returnUrl" => $_SERVER['REQUEST_URI'])));
209+
$approvalUrl = $this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkToRoute("solid.page.approval", array("clientId" => $clientId, "returnUrl" => $returnUrl)));
190210
$result->addHeader("Location", $approvalUrl);
191211
return $result; // ->addHeader('Access-Control-Allow-Origin', '*');
192212
}
@@ -200,12 +220,12 @@ public function authorize() {
200220

201221
$response = $server->respondToAuthorizationRequest($request, $user, $approval);
202222
$response = $this->tokenGenerator->addIdTokenToResponse(
203-
$response,
204-
$clientId,
205-
$this->getProfilePage(),
206-
$this->session->get("nonce"),
207-
$this->config->getPrivateKey()
208-
);
223+
$response,
224+
$clientId,
225+
$this->getProfilePage(),
226+
$this->session->get("nonce"),
227+
$this->config->getPrivateKey()
228+
);
209229

210230
return $this->respond($response); // ->addHeader('Access-Control-Allow-Origin', '*');
211231
}

0 commit comments

Comments
 (0)