diff options
Diffstat (limited to 'lib/SAML2/StatusResponse.php')
-rw-r--r-- | lib/SAML2/StatusResponse.php | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/lib/SAML2/StatusResponse.php b/lib/SAML2/StatusResponse.php deleted file mode 100644 index bc264fb..0000000 --- a/lib/SAML2/StatusResponse.php +++ /dev/null @@ -1,193 +0,0 @@ -<?php - -/** - * Base class for all SAML 2 response messages. - * - * Implements samlp:StatusResponseType. All of the elements in that type is - * stored in the SAML2_Message class, and this class is therefore more - * or less empty. It is included mainly to make it easy to separate requests from - * responses. - * - * The status code is represented as an array on the following form: - * array( - * 'Code' => '<top-level status code>', - * 'SubCode' => '<second-level status code>', - * 'Message' => '<status message>', - * ) - * - * Only the 'Code' field is required. The others will be set to NULL if they - * aren't present. - * - * @package simpleSAMLphp - * @version $Id$ - */ -abstract class SAML2_StatusResponse extends SAML2_Message { - - /** - * The ID of the request this is a response to, or NULL if this is an unsolicited response. - * - * @var string|NULL - */ - private $inResponseTo; - - - /** - * The status code of the response. - * - * @var array - */ - private $status; - - - /** - * Constructor for SAML 2 response messages. - * - * @param string $tagName The tag name of the root element. - * @param DOMElement|NULL $xml The input message. - */ - protected function __construct($tagName, DOMElement $xml = NULL) { - parent::__construct($tagName, $xml); - - $this->status = array( - 'Code' => SAML2_Const::STATUS_SUCCESS, - 'SubCode' => NULL, - 'Message' => NULL, - ); - - if ($xml === NULL) { - return; - } - - if ($xml->hasAttribute('InResponseTo')) { - $this->inResponseTo = $xml->getAttribute('InResponseTo'); - } - - $status = SAML2_Utils::xpQuery($xml, './saml_protocol:Status'); - if (empty($status)) { - throw new Exception('Missing status code on response.'); - } - $status = $status[0]; - - $statusCode = SAML2_Utils::xpQuery($status, './saml_protocol:StatusCode'); - if (empty($statusCode)) { - throw new Exception('Missing status code in status element.'); - } - $statusCode = $statusCode[0]; - - $this->status['Code'] = $statusCode->getAttribute('Value'); - - $subCode = SAML2_Utils::xpQuery($statusCode, './saml_protocol:StatusCode'); - if (!empty($subCode)) { - $this->status['SubCode'] = $subCode[0]->getAttribute('Value'); - } - - $message = SAML2_Utils::xpQuery($status, './saml_protocol:StatusMessage'); - if (!empty($message)) { - $this->status['Message'] = trim($message[0]->textContent); - } - } - - - /** - * Determine whether this is a successful response. - * - * @return boolean TRUE if the status code is success, FALSE if not. - */ - public function isSuccess() { - assert('array_key_exists("Code", $this->status)'); - - if ($this->status['Code'] === SAML2_Const::STATUS_SUCCESS) { - return TRUE; - } - - return FALSE; - } - - - /** - * Retrieve the ID of the request this is a response to. - * - * @return string|NULL The ID of the request. - */ - public function getInResponseTo() { - return $this->inResponseTo; - } - - - /** - * Set the ID of the request this is a response to. - * - * @param string|NULL $inResponseTo The ID of the request. - */ - public function setInResponseTo($inResponseTo) { - assert('is_string($inResponseTo) || is_null($inResponseTo)'); - - $this->inResponseTo = $inResponseTo; - } - - - /** - * Retrieve the status code. - * - * @return array The status code. - */ - public function getStatus() { - return $this->status; - } - - - /** - * Set the status code. - * - * @param array $status The status code. - */ - public function setStatus(array $status) { - assert('array_key_exists("Code", $status)'); - - $this->status = $status; - if (!array_key_exists('SubCode', $status)) { - $this->status['SubCode'] = NULL; - } - if (!array_key_exists('Message', $status)) { - $this->status['Message'] = NULL; - } - } - - - /** - * Convert status response message to an XML element. - * - * @return DOMElement This status response. - */ - public function toUnsignedXML() { - - $root = parent::toUnsignedXML(); - - if ($this->inResponseTo !== NULL) { - $root->setAttribute('InResponseTo', $this->inResponseTo); - } - - $status = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'Status'); - $root->appendChild($status); - - $statusCode = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'StatusCode'); - $statusCode->setAttribute('Value', $this->status['Code']); - $status->appendChild($statusCode); - - if (!is_null($this->status['SubCode'])) { - $subStatusCode = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'StatusCode'); - $subStatusCode->setAttribute('Value', $this->status['SubCode']); - $statusCode->appendChild($subStatusCode); - } - - if (!is_null($this->status['Message'])) { - SAML2_Utils::addString($status, SAML2_Const::NS_SAMLP, 'StatusMessage', $this->status['Message']); - } - - return $root; - } - - -} - -?>
\ No newline at end of file |