@@ -249,12 +249,13 @@ public function processResponse($requestId = null, $payload =[])
249249     * 
250250     * @throws OneLogin_Saml2_Error 
251251     */ 
252-     public  function  processSLO ($ keepLocalSession  = false , $ requestId  = null , $ retrieveParametersFromServer  = false , $ cbDeleteSession  = null , $ stay  = false )
252+     public  function  processSLO ($ keepLocalSession  = false , $ requestId  = null , $ retrieveParametersFromServer  = false , $ cbDeleteSession  = null , $ stay  = false ,  $ payload  =  null )
253253    {
254254        $ this  ->_errors  = array ();
255255        $ this  ->_errorReason  = null ;
256-         if  (isset ($ _GET  ['SAMLResponse ' ])) {
257-             $ logoutResponse  = new  OneLogin_Saml2_LogoutResponse ($ this  ->_settings , $ _GET  ['SAMLResponse ' ]);
256+         $ payload  = $ payload  ?: $ _GET  ;
257+         if  (isset ($ payload ['SAMLResponse ' ])) {
258+             $ logoutResponse  = new  OneLogin_Saml2_LogoutResponse ($ this  ->_settings , $ payload ['SAMLResponse ' ]);
258259            $ this  ->_lastResponse  = $ logoutResponse ->getXML ();
259260            if  (!$ logoutResponse ->isValid ($ requestId , $ retrieveParametersFromServer )) {
260261                $ this  ->_errors [] = 'invalid_logout_response ' ;
@@ -271,8 +272,8 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
271272                    }
272273                }
273274            }
274-         } else  if  (isset ($ _GET  ['SAMLRequest ' ])) {
275-             $ logoutRequest  = new  OneLogin_Saml2_LogoutRequest ($ this  ->_settings , $ _GET  ['SAMLRequest ' ]);
275+         } else  if  (isset ($ payload  ['SAMLRequest ' ])) {
276+             $ logoutRequest  = new  OneLogin_Saml2_LogoutRequest ($ this  ->_settings , $ payload  ['SAMLRequest ' ]);
276277            $ this  ->_lastRequest  = $ logoutRequest ->getXML ();
277278            if  (!$ logoutRequest ->isValid ($ retrieveParametersFromServer )) {
278279                $ this  ->_errors [] = 'invalid_logout_request ' ;
@@ -294,8 +295,8 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
294295                $ logoutResponse  = $ responseBuilder ->getResponse ();
295296
296297                $ parameters  = array ('SAMLResponse '  => $ logoutResponse );
297-                 if  (isset ($ _GET  ['RelayState ' ])) {
298-                     $ parameters ['RelayState ' ] = $ _GET  ['RelayState ' ];
298+                 if  (isset ($ payload  ['RelayState ' ])) {
299+                     $ parameters ['RelayState ' ] = $ payload  ['RelayState ' ];
299300                }
300301
301302                $ security  = $ this  ->_settings ->getSecurityData ();
@@ -305,7 +306,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
305306                    $ parameters ['Signature ' ] = $ signature ;
306307                }
307308
308-                 return  $ this  ->redirectTo ($ this  ->getSLOResponseUrl (), $ parameters , $ stay );
309+                 return  $ this  ->redirectTo ($ this  ->getSLOResponseUrl (), $ parameters , $ stay,  $ payload  );
309310            }
310311        } else  {
311312            $ this  ->_errors [] = 'invalid_binding ' ;
@@ -328,13 +329,14 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
328329     * 
329330     * @throws OneLogin_Saml2_Error 
330331     */ 
331-     public  function  redirectTo ($ url  = '' , $ parameters  = array (), $ stay  = false )
332+     public  function  redirectTo ($ url  = '' , $ parameters  = array (), $ stay  = false ,  $ payload  =  null )
332333    {
333334        assert ('is_string($url) ' );
334335        assert ('is_array($parameters) ' );
335336
336-         if  (empty ($ url ) && isset ($ _REQUEST  ['RelayState ' ])) {
337-             $ url  = $ _REQUEST  ['RelayState ' ];
337+         $ payload  = $ payload  ?: $ _REQUEST  ;
338+         if  (empty ($ url ) && isset ($ payload ['RelayState ' ])) {
339+             $ url  = $ payload ['RelayState ' ];
338340        }
339341
340342        return  OneLogin_Saml2_Utils::redirect ($ url , $ parameters , $ stay );
0 commit comments