@@ -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