Skip to content

Commit e7765b8

Browse files
authored
Merge pull request #475 from Ricky-rick/logout-request-sepp-func
Move the creation of the LogoutRequest and the LogoutResponse object to separate functions
2 parents a7328b1 + 9e03729 commit e7765b8

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

src/Saml2/Auth.php

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
279279
$this->_errors = array();
280280
$this->_lastError = $this->_lastErrorException = null;
281281
if (isset($_GET['SAMLResponse'])) {
282-
$logoutResponse = new LogoutResponse($this->_settings, $_GET['SAMLResponse']);
282+
$logoutResponse = $this->buildLogoutResponse($this->_settings, $_GET['SAMLResponse']);
283283
$this->_lastResponse = $logoutResponse->getXML();
284284
if (!$logoutResponse->isValid($requestId, $retrieveParametersFromServer)) {
285285
$this->_errors[] = 'invalid_logout_response';
@@ -299,7 +299,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
299299
}
300300
}
301301
} else if (isset($_GET['SAMLRequest'])) {
302-
$logoutRequest = new LogoutRequest($this->_settings, $_GET['SAMLRequest']);
302+
$logoutRequest = $this->buildLogoutRequest($this->_settings, $_GET['SAMLRequest']);
303303
$this->_lastRequest = $logoutRequest->getXML();
304304
if (!$logoutRequest->isValid($retrieveParametersFromServer)) {
305305
$this->_errors[] = 'invalid_logout_request';
@@ -315,7 +315,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
315315
}
316316
$inResponseTo = $logoutRequest->id;
317317
$this->_lastMessageId = $logoutRequest->id;
318-
$responseBuilder = new LogoutResponse($this->_settings);
318+
$responseBuilder = $this->buildLogoutResponse($this->_settings);
319319
$responseBuilder->build($inResponseTo);
320320
$this->_lastResponse = $responseBuilder->getXML();
321321

@@ -594,7 +594,7 @@ public function logout($returnTo = null, array $parameters = array(), $nameId =
594594
$nameIdFormat = $this->_nameidFormat;
595595
}
596596

597-
$logoutRequest = new LogoutRequest($this->_settings, null, $nameId, $sessionIndex, $nameIdFormat, $nameIdNameQualifier, $nameIdSPNameQualifier);
597+
$logoutRequest = $this->buildLogoutRequest($this->_settings, null, $nameId, $sessionIndex, $nameIdFormat, $nameIdNameQualifier, $nameIdSPNameQualifier);
598598

599599
$this->_lastRequest = $logoutRequest->getXML();
600600
$this->_lastRequestID = $logoutRequest->id;
@@ -670,11 +670,42 @@ public function getLastRequestID()
670670
*
671671
* @return AuthnRequest The AuthnRequest object
672672
*/
673-
public function buildAuthnRequest($settings, $forceAuthn, $isPassive, $setNameIdPolicy, $nameIdValueReq = null)
673+
public function buildAuthnRequest(Settings $settings, $forceAuthn, $isPassive, $setNameIdPolicy, $nameIdValueReq = null)
674674
{
675675
return new AuthnRequest($settings, $forceAuthn, $isPassive, $setNameIdPolicy, $nameIdValueReq);
676676
}
677677

678+
/**
679+
* Creates an LogoutRequest
680+
*
681+
* @param Settings $settings Settings
682+
* @param string|null $request A UUEncoded Logout Request.
683+
* @param string|null $nameId The NameID that will be set in the LogoutRequest.
684+
* @param string|null $sessionIndex The SessionIndex (taken from the SAML Response in the SSO process).
685+
* @param string|null $nameIdFormat The NameID Format will be set in the LogoutRequest.
686+
* @param string|null $nameIdNameQualifier The NameID NameQualifier will be set in the LogoutRequest.
687+
* @param string|null $nameIdSPNameQualifier The NameID SP NameQualifier will be set in the LogoutRequest.
688+
*/
689+
public function buildLogoutRequest(Settings $settings, $request = null, $nameId = null, $sessionIndex = null, $nameIdFormat = null, $nameIdNameQualifier = null, $nameIdSPNameQualifier = null)
690+
{
691+
return new LogoutRequest($settings, $request, $nameId, $sessionIndex, $nameIdFormat, $nameIdNameQualifier, $nameIdSPNameQualifier);
692+
}
693+
694+
/**
695+
* Constructs a Logout Response object (Initialize params from settings and if provided
696+
* load the Logout Response.
697+
*
698+
* @param Settings $settings Settings.
699+
* @param string|null $response An UUEncoded SAML Logout response from the IdP.
700+
*
701+
* @throws Error
702+
* @throws Exception
703+
*/
704+
public function buildLogoutResponse(Settings $settings, $response = null)
705+
{
706+
return new LogoutResponse($settings, $response);
707+
}
708+
678709
/**
679710
* Generates the Signature for a SAML Request
680711
*

0 commit comments

Comments
 (0)